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

Multiples Listas Dependientes (no anda)

Estas en el tema de Multiples Listas Dependientes (no anda) en el foro de ASP Clásico en Foros del Web. Hola: Tengo tres(3) combos enlazados(Select1->Select2->Select3), donde selecciono Pais(Select1) -> Provincia(Select2) -> Ciudades(Select3). Esto funciona barbaro hasta el 2do.Select , ya que al elegir una Provincia(Select2): ...
  #1 (permalink)  
Antiguo 14/03/2006, 21:12
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Multiples Listas Dependientes (no anda)

Hola:

Tengo tres(3) combos enlazados(Select1->Select2->Select3), donde selecciono Pais(Select1) -> Provincia(Select2) -> Ciudades(Select3). Esto funciona barbaro hasta el 2do.Select , ya que al elegir una Provincia(Select2): da error de JavaScript y nunca logro cargar el 3er.Select.
Nota: el 1er.Select se carga al (inicio)cargar la pagina.

Esto es para cargar el 2do,y 3er.Select:
Código:
<script language = "JavaScript">
<% 
'------------------------------------Consulta para OBTENER las PROVINCIAS------------------------------------
Dim x1, strSQL

Set  objRS= CreateObject("ADODB.Recordset")
strSQL = "select * from Tabla "& _
         "order by Provincia, Ciudad"
objRS.Open strSQL, oConn

x1=0
'-------------------------FUNCION DE COMBO BOX COMBINADO [Para el Select_Provincia]-------------------------
%>
function cargarProv(form, itemSeleccionado) {
  form.Provincia.length = 0

<%
  count= 0
  y=0
  Do While not objRS.EOF
%>

    x1 = <%= trim(y) %>;

    subcat = new Array();
    subcatagory = "<%=(objRS("pais")) %>";
    subcatagoryof = "<%=(objRS("provincia"))%>";
    subcat[x1,0] = subcatagory;
    subcat[x1,1] = subcatagoryof;
    if (subcat[x1,0] == itemSeleccionado) {
      var option<%= trim(count) %> = new Option(subcat[x1,1]);
      form.provincia.options[form.provincia.length]= option<%= trim(count)%>;
      form.provincia.options[form.provincia.length -1].value= subcat[x1,1];
    }
<%
    count = count + 1
    y = y + 1
    objRS.MoveNext
  Loop
  objRS.Close
%>
}
</script>

<script language = "JavaScript">
<%
'------------------------------------Consulta para OBTENER las CIUDADES-------------------------
Dim x2, strSQL1, count, y

strSQL1 = "select * from Tabla "
objRS.Open strSQL1, oConn

x2=0
'-------------------------FUNCION DE COMBO BOX COMBINADO [Para el Select_Ciudad]-----------------
%>
function cargarCiudad(form, itemSeleccionado) {
  form.Ciudad.length = 0

<%
  count= 0
  y=0
  Do While not objRS.EOF
%>

    x2 = <%= trim(y) %>;

    subcat = new Array();
    subcatagory = "<%=(objRS("ciudad")) %>";
    subcatagoryof = "<%=objRS("ciudad")%>";
    subcat[x2,0] = subcatagory;
    subcat[x2,1] = subcatagoryof;
    if(<%=objRS("ciudad")%> == itemSeleccionado) {
      var option<%= trim(count) %> = new Option(subcat[x2,1]);
      form.Ciudad.options[form.Ciudad.length]= option<%= trim(count)%>;
      form.Ciudad.options[form.Ciudad.length -1].value= subcat[x2,0];
    }
<%
    count = count + 1
    y = y + 1
    objRS.MoveNext
  Loop
  objRS.Close
%>
}
</script>
Estos son los 3Combos:
Código:
  <SELECT size="1" name="pais" class="fuente" onChange="cargarProv(this.form,Pais.value);">
    <option value="" selected>Seleccione Pais</option>

<%
  Dim x

  Set  objRS= CreateObject("ADODB.Recordset")
  strSQL = "select distinct Pais from Tabla "
  objRS.Open strSQL, oConn

  While not objRS.EOF
%>
    <option value="<%=objRS("Pais")%>"><%=objRS("Pais")%></option>
<%
    objRS.MoveNext
  Wend
  Set objRS= nothing
  oConn.Close
  Set oConn= nothing
%>
  </select>



      <td width="137" bgcolor="#F1ECC5" height="1"> 
	<SELECT name="Provincia" size=6 class="fuente_chica" onChange="cargarCiudad(this.form,Provincia.value);">
	</select>
      </td>
      <td height="1" width="161"> 
	<SELECT name="Ciudad" size=6 class="fuente_chica">
	</select>
      </td>
Agradesco de antemano si alguien me puede dar alguna mano,
Gracias y Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #2 (permalink)  
Antiguo 18/03/2006, 09:09
Avatar de Kalimdor  
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panamá, República de Panamá.
Mensajes: 68
Antigüedad: 19 años, 10 meses
Puntos: 0
Amigo:

Lo que podría hacer es recomendarte el código de la siguiente página:
http://www.macromedia.com/cfusion/kn...fm?id=tn_19117

Está el código para vbscript y javascript y trabaja perfectamente para n cantidad de listas dependientes.

Lamento no poder revisar tu código y darte una mano de otra manera, pero esto te puede ayudar.

Saludos.
__________________
"Dios no manda cosas imposibles sino que, al mandar, te enseña a que hagas cuanto puedes y a que pidas lo que no puedes".
San Agustín.
  #3 (permalink)  
Antiguo 18/03/2006, 18:31
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 3 meses
Puntos: 2
si es error de javacript. muevanlo para alla y en lo posible coloca de otro color o en negrita la linea que te marca error.
  #4 (permalink)  
Antiguo 21/03/2006, 10:51
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Sonrisa Solucionado !

Perdon por la demora en contestar ya lo habia solucionado, (creo que era un error de js), encuanto tenga el codigo lo subo.

Kalimdor:
Gracias por tu demo de macromedia, muy buena y gracias a ElAprendiz por contestar.

Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #5 (permalink)  
Antiguo 21/03/2006, 14:13
Avatar de Kalimdor  
Fecha de Ingreso: junio-2004
Ubicación: Ciudad de Panamá, República de Panamá.
Mensajes: 68
Antigüedad: 19 años, 10 meses
Puntos: 0
De acuerdo Con mucho gusto.

Por nada, amigo.

Y me alegro mucho de que hayas resuelto tu problema.

Saludos.

-Kalimdor.
__________________
"Dios no manda cosas imposibles sino que, al mandar, te enseña a que hagas cuanto puedes y a que pidas lo que no puedes".
San Agustín.
  #6 (permalink)  
Antiguo 17/05/2006, 22:43
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Información Documentar

Lo prometido es deuda dicen, aunque sea un poco tarde, lo importante es cumplir, como parte del agradecimiento a todos los que alguna vez aportamos algo.

Ante todo una aclaracion: me puse a ver todos mis post y me encontre con que habia varios que quedaron inconclusos(aunque ya fueron solucionados en su tiempo de publicacion), entonces decidi cerrar todos mis post, es decir a lo largo de todo este tiempo fui aprendiendo con ustedes(entre otras fuentes), y me parecio etico aportarles un poco de orden para que estos post sirvan a otra gente.

Este tema lo solucione asi:
Código:
<script language = "JavaScript">
<% 
Dim x1, strSQL

Set  objRS= CreateObject("ADODB.Recordset")
strSQL = "select distinct Pais, Provincia from Paises "& _
         "order by Pais"
objRS.Open strSQL, oConn

x1=0
%>
//--------------FUNCION DE COMBO BOX COMBINADO [Para el Select_Provincia]----------
function cargarProvincia(form, itemSeleccionado) {
  form.Provincia.length = 0
  //alert("La Provincia Seleccionada es: "+itemSeleccionado); [DEBUG]

<%
  count= 0
  y=0
  Do While not objRS.EOF
%>

    x1 = <%= trim(y) %>;

    subcat = new Array();
    subcatagory = "<%=(objRS("Provincia")) %>";
    subcatagoryof = "<%=(objRS("Pais"))%>";
    subcat[x1,0] = subcatagory;
    subcat[x1,1] = subcatagoryof;
    if (subcat[x1,0] == itemSeleccionado ) {
      var option<%= trim(count) %> = new Option(subcat[x1,1]);
      form.Provincia.options[form.Provincia.length]= option<%= trim(count)%>;
      form.Provincia.options[form.Provincia.length -1].value= subcat[x1,1];
    }
<%
    count = count + 1
    y = y + 1
    objRS.MoveNext
  Loop
  objRS.Close
  
%>
}
</script>

<script language = "JavaScript">
//------------------Consulta para OBTENER los Paises-----------------
<%
Dim x2, strSQL1, count, y

strSQL1 = "select * from Paises "& _
          "order by Paises"
objRS.Open strSQL1, oConn

x2=0
%>
//-------------FUNCION DE COMBO BOX COMBINADO [Para el Select_Pais]----------
function cargarPais(form, itemSeleccionado) {
  form.Pais.length = 0
  //alert("El Pais Seleccionado es: "+itemSeleccionado); [DEBUG]

<%
  count= 0
  y=0
  Do While not objRS.EOF
%>

    x2 = <%= trim(y) %>;

    subcat = new Array();
    subcatagory = "<%=(objRS("Pais")) %>";
    subcatagoryof = "<%=objRS("Pais")%>"; //Es la Categoria mas alta
    subcat[x2,0] = subcatagory;
    subcat[x2,1] = subcatagoryof;
    if("<%=objRS("Pais")%>" == itemSeleccionado) {
      var option<%= trim(count) %> = new Option(subcat[x2,1]);
      form.Pais.options[form.Pais.length]= option<%= trim(count)%>;
      form.Pais.options[form.Pais.length -1].value= subcat[x2,0];
    }
<%
    count = count + 1
    y = y + 1
    objRS.MoveNext
  Loop
  objRS.Close
%>
}
</script>
<!--...y asi sucesivamente con cuantos combos necesiten-->
Si tienen BD MUY Grandes, no les va a convenir cargar TODA la tabla, en esos casos lo expuesto anteriormente no sirve, entonces hay que usar "Remote Scripting", hay mucha documentacion para leer.

Saludos
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:

Última edición por horizonte; 17/05/2006 a las 22:50
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 19:45.