Foros del Web » Programando para Internet » ASP Clásico »

pregunta sólo para expertos por su dificultad.

Estas en el tema de pregunta sólo para expertos por su dificultad. en el foro de ASP Clásico en Foros del Web. El tema es q tengo una base de datos (sql) con dos tablas: empresas y contactosempresas (relazionadas por el campo codempresa ya que los contactos ...
  #1 (permalink)  
Antiguo 12/06/2002, 04:11
 
Fecha de Ingreso: abril-2002
Mensajes: 216
Antigüedad: 23 años
Puntos: 0
pregunta sólo para expertos por su dificultad.

El tema es q tengo una base de datos (sql) con dos tablas: empresas y contactosempresas (relazionadas por el campo codempresa ya que los contactos pertenecen a una determinada empresa).

Tengo un form dentro de una página asp en el que tengo dos menús desplegables, uno para elejir la empresa y otro para elejir el contacto.

Quiero que dependiendo de la empresa elejida en el primer menú desplegable, me aparezca en el segundo menú (el de contactos) tan solo los contactos de la empresa del menú superior.

os enseño como llevo el código...

//1º tengo las select aunke sospecho que la consulta strsql3 tengo que ponerla o mejor dicho ejecutarla en otro sitio y con mejor sintaxis...
Código:
strsql2 = "select * from empresas"
set miconexion2 = conexion.execute(strsql2)

strsql3 = "select c.Cod_contacto,c.nombre,c.codempresa,e.codempresa from contactosempresas c, empresas e where c.codempresa=e.codempresa"
set miconexion3 = conexion.execute(strsql3)
//y después tengo los menús...(dentro de unas tablas).
Código:
  <td width="29%"> Contacto:</td>
      <td width="71%">  <select size="1" name="contacto">
  <%do while not miconexion2.eof %>
  <option selected value=<% Response.write(miconexion2.fields("codempresa") & " <br>")%><% response.write(miconexion2.fields("nombre") & "<br>") %></option>
    <% miconexion2.movenext
  loop%>
        </select>

      </td>
    </tr>
    <tr>
      <td width="29%"> Contacto:</td>
      <td width="71%">  <select size="1" name="contacto">
  <%do while not miconexion3.eof %>
  <option selected value=<% Response.write(miconexion3.fields("cod_contacto") & " <br>")%><% response.write(miconexion3.fields("nombre") & "<br>") %></option>
    <% miconexion3.movenext
  loop%>
Pienso que la strsql3 debe ejecutarse en otro lugar y con la sintaxis adecuada.
Puede alguien ayudarme un poco con esto¿?¿?
Muchas Gracia por vuestra atención.

<p align="center"><font color="#219CC6" size="3">"...Siempre he confiado en la bondad de l@s desconocid@s."</p>[/CODE]
  #2 (permalink)  
Antiguo 12/06/2002, 04:32
 
Fecha de Ingreso: abril-2002
Mensajes: 216
Antigüedad: 23 años
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.

Antes he posteado dos pequeños errores, aqui los corrijo, más que nada por si confunden

Código:
&lt;tr&gt;
      &lt;td width=&quot;29%&quot;&gt;Empresa:  &lt;/td&gt;
      &lt;td width=&quot;71%&quot;&gt; &lt;select size=&quot;1&quot; name=&quot;Empresa&quot;  &gt;
  &lt;%do while not miconexion2.eof %&gt;
  &lt;option selected value=&lt;% Response.write(miconexion2.fields(&quot;codempresa&quot;) &amp; &quot; &lt;br&gt;&quot;)%&gt;&lt;% response.write(miconexion2.fields(&quot;nombre&quot;) &amp; &quot;&lt;br&gt;&quot;) %&gt;&lt;/option&gt;
  &amp;nbsp; &lt;% miconexion2.movenext
  loop%&gt;
        &lt;/select&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
    
    &lt;tr&gt;
      &lt;td width=&quot;29%&quot;&gt; Contacto:&lt;/td&gt;
      &lt;td width=&quot;71%&quot;&gt; &lt;select size=&quot;1&quot; name=&quot;contacto&quot;&gt;
  &lt;%do while not miconexion3.eof %&gt;
  &lt;option selected value=&lt;% Response.write(miconexion3.fields(&quot;cod_contacto&quot;) &amp; &quot; &lt;br&gt;&quot;)%&gt;&lt;% response.write(miconexion3.fields(&quot;nombre&quot;) &amp; &quot;&lt;br&gt;&quot;) %&gt;&lt;/option&gt;
  &amp;nbsp; &lt;% miconexion3.movenext
  loop%&gt;
  &lt;/select&gt;&lt;/td&gt;
    &lt;/tr&gt;
<p align="center"><font color="#219CC6" size="3">"...Siempre he confiado en la bondad de l@s desconocid@s."</p>[/CODE]
  #3 (permalink)  
Antiguo 12/06/2002, 05:38
 
Fecha de Ingreso: junio-2002
Mensajes: 15
Antigüedad: 22 años, 11 meses
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.

Sin ver el codigo lo que tienes que hacer que supongo ya lo haras es que por cada empresa que elija automaticamente se refresque la página para ello lo que haces es comparar lo que te viene del rescate con la empresa que sale de la base de datos asi consigues que se quede la empresa seleccionada, del mismo modo que rescatas la empresa del desplegable compones la query para el segundo desplegable. La primera ve z el segundo desplegable estara vacio porque el desplegable ej_empresa vendra vacio. Y asi lo tienes si quieres me mandas un mensaje a [email protected] y tratare de mandarte un ejemplo echo por mi.

<a href="mailto:[email protected]">Lolo</a>
<img src="http://www.pajarolandia.com/mandarin.gif">
<a href="http://www.pajarolandia.com">www.pajarolandia.com</a>
  #4 (permalink)  
Antiguo 12/06/2002, 05:57
 
Fecha de Ingreso: abril-2002
Mensajes: 216
Antigüedad: 23 años
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.


Mi no comprender tú...

La verdad es que no he entendido casi nada de lo que me pides que haga, ni siquiera el concepto. Si puedes mandarme un ejemplo o postearlo sería estupendo oye.
[email protected]
gracias.


<p align="center"><font color="#219CC6" size="3">"...Siempre he confiado en la bondad de l@s desconocid@s."</p>[/CODE]
  #5 (permalink)  
Antiguo 12/06/2002, 08:15
Avatar de TomaHawkk  
Fecha de Ingreso: diciembre-2001
Ubicación: España
Mensajes: 422
Antigüedad: 23 años, 5 meses
Puntos: 1
Re: pregunta sólo para expertos por su dificultad.

Hola!

Esto es basicamente lo que quieres, después puedes hacer cambios según lo creas conveniente...

Código:
  
&lt;%
Dim Empresa

Empresa = request(&quot;empresas&quot;)

strsql2 = &quot;select * from empresas&quot;
set miconexion2 = conexion.execute(strsql2)
%&gt;
&lt;FORM METHOD=POST ACTION=&quot;&quot; name=&quot;thisForm&quot;&gt;
	 
&lt;td width=&quot;29%&quot;&gt;EMPRESAS:&lt;/td&gt;
&lt;td width=&quot;71%&quot;&gt;
  &lt;select size=&quot;1&quot; name=&quot;empresas&quot; Onchange=&quot;thisForm.submit();&quot;&gt;
    &lt;%
	Do while not miconexion2.EOF
	   if Empresa = miconexion2.fields(&quot;codempresa&quot;)
	   %&gt;
	   	  &lt;option value=&quot;&lt;%=miconexion2.fields(&quot;codempresa&quot;)%&gt;&quot; selected&gt;
		     &lt;%=response.write(miconexion2.fields(&quot;nombre&quot;)%&gt;
		  &lt;/option&gt;
	   &lt;% else %&gt;
		  &lt;option value=&quot;&lt;%=miconexion2.fields(&quot;codempresa&quot;)%&gt;&quot;&gt;
		     &lt;%=response.write(miconexion2.fields(&quot;nombre&quot;)%&gt;
		  &lt;/option&gt;
	   &lt;% End if 
       miconexion2.movenext
    Loop
	%&gt;
&lt;/select&gt;

&lt;tr&gt;
	&lt;td width=&quot;29%&quot;&gt;CONTACTOS&lt;/td&gt;
	&lt;td width=&quot;71%&quot;&gt; 
		&lt;% If Empresa &lt;&gt; &quot;&quot; AND not isnull(Empresa) Then 
			strsql3 = &quot;select c.Cod_contacto,c.nombre from contactosempresas c, empresas e&quot; 
			strsql3 = strsql3 &amp; &quot; where c.codempresa=e.codempresa and c.codempresa = &quot; &amp; Empresa
			set miconexion3 = conexion.execute(strsql3)
			%&gt;
		   &lt;select size=&quot;1&quot; name=&quot;contactos&quot;&gt;
			  &lt;% Do while not miconexion3.EOF %&gt;
					&lt;option value=&lt;%=miconexion3.fields(&quot;cod_contacto&quot;)%&gt;&gt;&lt;%=miconexion3.fields(&quot;nombre&quot;)%&gt;&lt;/option&gt;
					&lt;% miconexion3.movenext
				 loop%&gt;
		   &lt;/select&gt;	
		&lt;% End If %&gt;
	 &lt;/td&gt;
 &lt;/tr&gt;
&lt;/FORM&gt;
Saludos.
  #6 (permalink)  
Antiguo 12/06/2002, 11:44
 
Fecha de Ingreso: abril-2002
Mensajes: 216
Antigüedad: 23 años
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.

Gracias rubén, la verdad es que hasta mñn por la mñn no lo podré comprobar, pero weno, espero q sirva, tiene buena pinta :)

te he respondido una duda que tenias conun error muy puñetero de asp.

un saludo y muchas gracias.
  #7 (permalink)  
Antiguo 12/06/2002, 12:05
 
Fecha de Ingreso: mayo-2002
Mensajes: 45
Antigüedad: 23 años
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.

Soy neofito en esto, pero para probar el ejemplo, lo he adaptado a mis tablas, pero en la combo, me sale vacia.

Si elimino este codigo, si sale rellena la combo de empresas
...
if Empresa = Ob_RS.fields(&quot;PROD_COD&quot;) then %&gt;
&lt;option value=&quot;&lt;%=Ob_RS.fields(&quot;EMPRESA_COD&q uot;)%&gt;&quot; selected&gt;&lt;%=response.write(Ob_RS.fields(&quo t;EMPRESA_NOM&quot;))%&gt;
&lt;/option&gt;
&lt;% else
...
Y al seleciconar de la combo, en cambio me da un error en la línea
&lt;select size=&quot;1&quot; name=&quot;Empresa&quot; Onchange=&quot;Ej01.submit();&quot;&gt;

¿Why? Tell me why.
  #8 (permalink)  
Antiguo 12/06/2002, 13:45
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.

por que no usas combos enlazados y asi evitas refrescar la pag cada vez que eliges algo?

<a href='ir.asp?http://www.asptutor.com/asp/vart.asp?id=102' target='_blank'>http://www.asptutor.com/asp/vart.asp?id=...</a>
  #9 (permalink)  
Antiguo 12/06/2002, 17:00
Avatar de TomaHawkk  
Fecha de Ingreso: diciembre-2001
Ubicación: España
Mensajes: 422
Antigüedad: 23 años, 5 meses
Puntos: 1
Re: pregunta sólo para expertos por su dificultad.

Hola!

Yo no he probado el código pero hace tiempo hice con 4 combos y me funcionaba haciendo algo parecido a lo que te puesto arriba, quizas sera cuestion de algun detalle...

Si lo pruebas y ves que no funciona no dudes en preguntar,ok!


  #10 (permalink)  
Antiguo 13/06/2002, 02:59
 
Fecha de Ingreso: abril-2002
Mensajes: 216
Antigüedad: 23 años
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.

Estoy haciendolo como dice bakzipp y va muy bien. Además no hay que refrescar cada vez que seleccionas una empresa diferente. Es un código excelente.
Gracias a los 2 por vuestra ayuda.

<p align="center"><font color="#219CC6" size="3">"...Siempre he confiado en la bondad de l@s desconocid@s."</p>[/CODE]
  #11 (permalink)  
Antiguo 13/06/2002, 09:47
 
Fecha de Ingreso: junio-2002
Mensajes: 1
Antigüedad: 22 años, 11 meses
Puntos: 0
Re: pregunta sólo para expertos por su dificultad.

&lt;%
'Aquí teneis lo que buscais, espero que os sirva...

'Por ejemplo tienes la siguiente conexión:

'cnConexion = &quot;la que sea&quot;
'Y las siguientes tablas relacionadas y queremos que cuando seleccionemos una marca de la primera de las listas aparezcan en la segunda lista los modelos relacionados:
'Tabla: MARCAS (PK_ID_MARCA, NOMBRE_MARCA)
'Tabla: MODELOS (PK_ID_MODELO, FK_ID_MARCA, NOMBRE_MODELO)


%&gt;
&lt;html&gt;
&lt;body&gt;
&lt;form name=&quot;marcas&quot; action=&quot;consultar_modelo.asp&quot; method=&quot;post&quot;&gt;
&lt;select name=&quot;lista1&quot; onChange=&quot;location.replace(location.href+'?pk _id_marca='+this.options[this.options.selectedIndex].value);&quot;&gt;
&lt;option value=&quot;&quot;&gt;Todas las marcas&lt;/option&gt;
&lt;%
Set rsMarcas = Server.CreateObject(&quot;ADODB:Recordset&quot;)
rsMarcas.Open &quot;select * from marcas&quot;, cnConexion
Do Until rsMarcas.EOF
%&gt;&lt;option value=&quot;&lt;%= rsMarcas(&quot;pk_id_marca&quot;) %&gt;&quot; &lt;% If Request.QueryString(&quot;pk_id_marca&quot;) = CStr(rsMarcas(&quot;pk_id_marca&quot;)) Then %&gt;selected&lt;% End If %&gt;&gt;&lt;%= rsMarcas(&quot;nombre_marca&quot;) %&gt;&lt;/option&gt;&lt;%
rsMarcas.MoveNext
Loop
rsMarcas.Close
Set rsMarcas = Nothing
%&gt;
&lt;/select&gt;

&lt;select name=&quot;lista2&quot;&gt;
&lt;%
Set rsModelos = Server.CreateObject(&quot;ADODB:Recordset&quot;)
'Ahora dependiendo de si hemos seleccionado alguna marca o todas generamos la correspondiente consulta:
If Request.QueryString(&quot;pk_id_marca&quot;) &lt;&gt; &quot;&quot; Then
strSql = &quot;select * from modelos where fk_id_marca = &quot; &amp; Request.QueryString(&quot;pk_id_marca&quot;)
Else
strSql = &quot;select * from modelos&quot;
End If
rsModelos.Open strSql, cnConexion
Do Until rsModelos.EOF
%&gt;&lt;option value=&quot;&lt;%= rsModelos(&quot;pk_id_modelo&quot;) %&gt;&quot;&gt;&lt;%= rsModelos(&quot;nombre_modelo&quot;) %&gt;&lt;/option&gt;&lt;%
rsModelos.MoveNext
Loop
rsModelos.Close
Set rsModelos = Nothing

'Espero que esta página os sirva de ayuda, no es muy complicado, espero que lo pilléis.
'También espero no haberme confundido en nada.
'Un saludo.
%&gt;
&lt;input type=&quot;submit&quot; name=&quot;Consultar modelo de la marca seleccionada&quot;&gt;
&lt;/select&gt;
&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:38.