Llevo todo el día intentando arreglar el siguiente problema:
Utilizo el codigo de listas dependientes de aspfacil, ese que tanto circula por este foro, y siempre me ha funcionado, pero ahora que lo quiero usar para mostrar otros datos, resulta que no me los muestra todos, es decir, tengo una tabla rangos (id_rango, name_rango), otra tipo_pieza (id_tipo_pieza, name_tipo_pieza) y una joyeria_productos (id_joyeria_productos, id_rango, id_tipo_pieza).
Quiero mostrar el primer combo solo con los nombres de la piezas que estan en articulos (puede haber mas piezas en la tabla piezas que no esten en articulos y no se mostrarian) y luego otro combo en el que mostrar los rangos asociados a esa pieza en la tabla articulos.
Pues bien, si tengo 4 piezas con id_tipo_pieza "1", y 2 de ellas tienen id_rango "2" y otras 2 id_rango "3" solo me muestra 2 opciones en el desplegable, pero el problema es que las opciones que muestra son iguales, es decir 2 y 2 en lugar de 2 y 3.
En otro caso de 4 piezas de id_tipo_pieza "2", y 2 de ellas id_rango "3" y otras 2 de id_rango "4", me muestra bien, una de id_rango 3 y otra de 4.
He llegado a pensar que solo se queda con los ultimos valores de la tabla, pero porque no coge todos?
Código:
Pueden comprobarlo en la siguiente direccion:<form action="search.asp" method="post" name="RANGOSSS"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="16%" class="camposformJoyeria">Piezas</td> <td width="26%"><select name="pieza" size="1" onChange="ComponerLista (document.forms.RANGOSSS.pieza[selectedIndex].value);" > <option value="0" selected>Seleccione... </option> <% Dim oConn, rsTIPO_PIEZA, SQL, cuenta set oConn=Server.CreateObject("ADODB.Connection") set rsTIPO_PIEZA=Server.CreateObject("ADODB.Recordset") oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data/km0.mdb") SQL="SELECT * FROM TIPO_PIEZA WHERE ID_TIPO_PIEZA IN (SELECT ID_TIPO_PIEZA FROM JOYERIA_PRODUCTOS)" rsTIPO_PIEZA.Open SQL, oConn cuenta=1 while not rsTIPO_PIEZA.EOF %> <option value="<%=rsTIPO_PIEZA.Fields("ID_TIPO_PIEZA")%>"> <%=rsTIPO_PIEZA.Fields("NAME_TIPO_PIEZA")%></option> <% rsTIPO_PIEZA.MoveNext cuenta=cuenta+1 wend rsTIPO_PIEZA.Close %> </select></td> <td width="14%">Precio</td> <td width="25%"><select name="rango"> <option value="0" selected>Seleccione...</option></select></td> <td width="19%"> <input type="submit" name="Submit" value="Buscar"> </td> </tr> </table> </form></td> </tr> </table> </td> </tr> </table> <SCRIPT LANGUAGE="Javascript"> <!-- function Tupla ( campo1, campo2 ) { this.campo1 = campo1; this.campo2 = campo2; } <% SQL="SELECT * from JOYERIA_PRODUCTOS" rsTIPO_PIEZA.Open SQL, oConn cuenta=0 cat="basura" while not rsTIPO_PIEZA.EOF if cat<>rsTIPO_PIEZA.Fields("ID_TIPO_PIEZA") then cuenta=0 cat=rsTIPO_PIEZA.Fields("ID_TIPO_PIEZA") %> var opciones<%=cat%> = new Array(); <% end if %> opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rsTIPO_PIEZA.Fields("id_RANGO")%>","<%=rsTIPO_PIEZA.Fields("ID_RANGO")%>"); <% cuenta=cuenta + 1 rsTIPO_PIEZA.MoveNext Wend %> <% rsTIPO_PIEZA.Close set rsTIPO_PIEZA=nothing oConn.Close set oConn = nothing %> var contador; function ComponerLista ( array ) { BorrarLista(); array = eval("opciones" + array); for (contador=0; contador<array.length; contador++) { var optionObj = new Option( array[contador].campo1, array[contador].campo2 ); RANGOSSS.rango.options[contador] = optionObj; } } function BorrarLista() { RANGOSSS.rango.length=0; } --> </SCRIPT> </form>
http://www.suntrapyasociados.com/pru...ria_marcas.asp
En esta otra esta hecha la prueba sin combos, pasando datos entre paginas (funciona correctamente y se pueden ver los valores que deberian salir):
http://www.suntrapyasociados.com/pruebas/prueba4.asp
Espero que puedan echarme una mano, si no para arreglarlo para decirme donde puede estar el error.
Muchas gracias.