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

Por favor ayuda, no consigo que me muestre todos los datos

Estas en el tema de Por favor ayuda, no consigo que me muestre todos los datos en el foro de ASP Clásico en Foros del Web. Buenos dias, necesito un poco de ayuda con el tema de los combos. Llevo todo el día intentando arreglar el siguiente problema: Utilizo el codigo ...
  #1 (permalink)  
Antiguo 10/01/2005, 02:46
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 22 años
Puntos: 0
Por favor ayuda, no consigo que me muestre todos los datos

Buenos dias, necesito un poco de ayuda con el tema de los combos.
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:
<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...&nbsp;&nbsp;</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>
Pueden comprobarlo en la siguiente direccion:
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.

Última edición por estoquera44; 10/01/2005 a las 06:53
  #2 (permalink)  
Antiguo 10/01/2005, 03:55
Avatar de Prefontaine  
Fecha de Ingreso: agosto-2004
Mensajes: 313
Antigüedad: 20 años, 8 meses
Puntos: 0
Lo que me marca a mi es que no se encuentra la pagina.. tal vez algún include o algo te haga un conflicto,insisto no me la muestra ese es el unico error que me muestra, valga la redundancia.

Un saludo
  #3 (permalink)  
Antiguo 10/01/2005, 04:39
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 22 años
Puntos: 0
No entiendo, no uso includes ni nada por el estilo.
Si chequeo los enlaces a mi si me muestra la pagina.
Puedes intentarlo de nuevo, Prefontaine?

Última edición por estoquera44; 10/01/2005 a las 06:52
  #4 (permalink)  
Antiguo 10/01/2005, 10:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Cambia la linea:
'SQL="SELECT * from JOYERIA_PRODUCTOS"

Por
SQL="SELECT Id_Tipo_Pieza, Id_rango from JOYERIA_PRODUCTOS group by Id_Tipo_Pieza, Id_Rango"

Prueba y nos dices.
  #5 (permalink)  
Antiguo 10/01/2005, 12:10
 
Fecha de Ingreso: mayo-2003
Mensajes: 70
Antigüedad: 22 años
Puntos: 0
Funciona perfectamente, Myakire.
La SQL que me has dado es la buena.
Muchas gracias porque llevaba un poquito de atraso con esto.
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 02:39.