Yo lo hize asi..y me funciono..espero te ayude en algo....
Aqui solo juegan 3 select
S1= Empresa
S2= Sucursal
S3= Departamento
1.-primero al cargar la pagina cargas todoas las empresa(en mi caso..en to caso Autos)
y dejamos por defecto en los tres select "todos"
2.-cuando eliges una empresa(auto para ti)...envias la pagina asi mismo enviando el indice de la empresa(auto)..cuando se carga a si misma recoges el valor con reques.qeurystring("Id")..y al recoger este resultado creas una consulta solo del los departamentos que seasn = a la empresa ejemplo
sql="SELECT * FROM Departamentos WHERE id_Empresa=" & Request.QueryString("Id")
ejecutas tu consulta y rellenbas el S2(select 2) con el resultado de la consulta..
y para que no se te pierda la empresa(auto) seleccionado vuelves a rellenar el select empresa..pero si el seleccionando la empresa consultada....jejeje chapusa pero si me sirvio....
y asi con el tercer o cuarto select......bueno espero te sirva.....bueno se que mi code no esta muy bien estructurado pero me sirvio y estoy en proceso de perfeccionarlo........
aqui te dejo el code....
Código:
'creo un formulario para enviar los datos a la hoja de resultados....
<form action="Resultado.asp" method="post" name="FormularioDatos" id="FormularioDatos">
<table width="217" border="2" align="center" cellpadding="3" cellspacing="0" background="Imagenes/img1.jpg" style="border:1px outset" img="img">
<tr>
<td align="right"><div align="left">Empresa :</div></td>
<td>
<div align="left">
'cuando seleccionas lanzas el valor a si mismo para despues recoger el resultado
<select name="Empresa" onchange="location.href('Filtro.asp?EmpresaP=' + FormularioDatos.Empresa.options[FormularioDatos.Empresa.selectedIndex].value)">
<option value="Todas">Todas</option>
<%
obtenemos el valor del query y comprobamos si no esta vacio
EmpreQuery = trim(request.querystring("EmpresaP"))
if EmpreQuery <> "" then
'rellenamos el select con la opcion de selected
Do while not FilEmpresas.Eof
Empresas=FilEmpresas("Empresa")
if Empresas = EmpreQuery then
Response.write "<option selected value=""" & Empresas & """>" & Empresas & "</option> "
else
Response.write "<option value=""" & Empresas & """>" & Empresas & "</option>"
end if
FilEmpresas.movenext
loop
else
'rellenamos sin selection
Do while not FilEmpresas.Eof
Empresas=FilEmpresas("Empresa")
Response.write "<option value=""" & Empresas & """>" & Empresas & "</option>"
FilEmpresas.movenext
loop
end if
%>
</select>
</div></td>
</tr>
<tr>
<td align="center" with="30"><div align="left">Sucursal::</div></td>
<td align="center" with="30"><div align="left">
<select name="Sucursal" id="Sucursal" onchange="location.href('Filtro.asp?EmpresaP=<%=EmpreQuery%>&SucursalP=' + FormularioDatos.Sucursal.options[FormularioDatos.Sucursal.selectedIndex].value)">
<option value="Todas">Todas</option>
<%
if Trim(request.querystring("EmpresaP"))<>"" then
SQL4="SELECT Empresa,Sucursal FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'"
set FilSucursal=createobject("ADODB.Recordset")
FilSucursal.open SQL4,ConexionBD
SQL5="SELECT count(*) as Total FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'"
set FilSucuCont=createobject("ADODB.Recordset")
FilSucuCont.open SQL5,ConexionBD
redim Sucu(FilSucuCont("Total"))
ContSucu=0
Sucu(0)=""
Do while not FilSucursal.Eof
Sucursales=FilSucursal("Sucursal")
for i=0 to ContSucu
if Sucu(i)=Sucursales then
' Response.write "<option value=""" & Departamento & """>" & Departamento & "</option>"
FocoS="Si"
Exit for
else
' Response.write "<option value=""" & Departamento & """>" & departamento & "</option>"
FocoS="No"
end if
next
if FocoS="No" then
Sucu(ContSucu)=Sucursales
if Trim(request.querystring("SucursalP"))<>"" and Trim(request.querystring("SucursalP"))=Sucursales then
Response.write "<option selected value=""" & Sucursales & """>" & Sucursales & "</option>"
else
Response.write "<option value=""" & Sucursales & """>" & Sucursales & "</option>"
end if
end if
ContSucu=ContSucu+1
FilSucursal.movenext
loop
FilSucursal.Close
filSucuCont.close
set FilSucursal= Nothing
set filSucuCont=Nothing
end if
%>
</select>
</div></td>
</tr>
<tr>
<td align="center" with="30"><div align="left">Departamento:</div></td>
<td align="center" with="30"><div align="left">
<select name="Departamento">
<option value="Todos">Todos</option>
<%
if Trim(request.querystring("EmpresaP"))<>"" and Trim(request.querystring("SucursalP"))<>"" then
SQL2="SELECT Empresa,Sucursal,Departamento FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'" & " and Sucursal= " & "'" & Trim(request.querystring("SucursalP")) & "'"
set FilDepartamento=createobject("ADODB.Recordset")
FilDepartamento.open SQL2,ConexionBD
SQL3="SELECT count(*) as Total FROM BASE WHERE Empresa=" & "'" & request.querystring("EmpresaP") & "'"
set FilDepCont=createobject("ADODB.Recordset")
filDepCont.open SQL3,ConexionBD
redim Depa(FilDepCont("Total"))
ContDep=0
Depa(0)=""
Do while not FilDepartamento.Eof
Departamento=FilDepartamento("Departamento")
for i=0 to ContDep
if Depa(i)=Departamento then
' Response.write "<option value=""" & Departamento & """>" & Departamento & "</option>"
Foco="Si"
Exit for
else
' Response.write "<option value=""" & Departamento & """>" & departamento & "</option>"
Foco="No"
end if
next
if Foco="No" then
Depa(ContDep)=Departamento
Response.write "<option value=""" & Departamento & """>" & Departamento & "</option>"
end if
ContDep=ContDep+1
FilDepartamento.movenext
loop
FilDepartamento.Close
filDepCont.close
set FilDepartamento= Nothing
set filDepCont=Nothing
end if
%>
</select>
</div></td>
</tr>
<tr><td align="center" with="30" colspan="2"><input name="Filtro" type="submit" id="Filtro" style="width:135px;height:30px" value="Filtrar" /></td></tr>
<%
FilEmpresas.close
set FilEmpresas= Nothing
ConexionBD.Close
Set ConexionBD = Nothing
end if
%>
esta un poco enredado....jejeje no lo se....soy novato..pero sirve
Bueno...intentare explicarte