Hola Compañeros, estoy trabajando sobre un codigo (que incluyo en zip con la BD) en donde estan
enlazados dos listbox(o select's), que funciona perfectamente, lo que pasa es que quiero adicional a estos dos select (Categorias y Productos) , en la misma pagina incluir dos selects independiente.. uno para Ventas y otro para Libros.
Se que tienen que tener dos o tres conecciones a la BD pero no me ha sido posible lograrlo. Necesito el codigo para estos Selects independientes, a continuacion de los selects dependientes.
El codigo y la Base de datos se puede descargar de
aqui
(Incluyo un
ejemplo de TRES!!! selects dependientes que vale la pena conocer y porque no mejorar...me funciona con los datos del ejemplo...pero con los mios ya no(+ de 2000 registros) ...y no se porque....de pronto por el numero de datos?)..si alguno se le mide a adaptarlo a otros datos seria muy bueno..
Gracias por la colaboración..
Copio el codigo con el nuevo resaltador de codigo:
Código asp:
Ver original<HTML>
<HEAD>
<TITLE>Listas dependientes</TITLE>
</HEAD>
<BODY>
<!--
Listas dependientes por Carlos de la Orden Dijs
17 de Diciembre de 2000
--->
<H2><CENTER>Listas dinámicas dependientes</CENTER></H2>
<P><B>Elige una categoría para ver los productos pertenecientes a ella:</B>
<P>
<FORM NAME="Listas" METHOD="POST" ACTION="receive.asp">
<B>Categorías</B>
<SELECT NAME="Categorias" SIZE="1"
OnChange="ComponerLista (document.forms.Listas.Categorias[selectedIndex].value);">
<%
Dim oConn, rs, SQL, cuenta, categoria
set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ejemplo.mdb")
SQL="SELECT * FROM Categorias"
rs.Open SQL, oConn
cuenta=1
while not rs.EOF
%>
<OPTION VALUE="<%=rs.Fields("IdCategoria")%>"
<% if cuenta=1 then%>
SELECTED
<%end if%>>
<%=rs.Fields("NomCategoria")%></OPTION>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</SELECT>
<P><B>Productos</B>
<SELECT NAME="Productos" SIZE="1">
</SELECT>
<P><INPUT TYPE="submit"></FORM>
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<%
'Vamos a crear nuestros arrays de productos desde ASP
'El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript
SQL="SELECT * FROM Productos ORDER BY Categoria, IdProducto"
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("Categoria") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("Categoria")
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=cat%> = new Array();
<%
end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("Nombre")%>","<%=rs.Fields("IdProducto")%>");
<%
cuenta=cuenta+1
rs.MoveNext
wend
%>
<%
'Limpiamos objetos
rs.Close
set rs=nothing
oConn.Close
set oConn=nothing
%>
var contador;
function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
Listas.Productos.options[contador] = optionObj;
} // for
} // ComponerLista
function BorrarLista() {
Listas.Productos.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</SCRIPT>
<br>
</FORM>
</BODY>
</HTML>