Mo me toda el dato del ComboBox --ASP--

Joe Pe?
13 de Junio del 2002
Tengo esto en mi pgina:
<select size="1" name="CobMarca" style="font-family: Verdana; font-size: 8pt" onChange="Cambio"> <option>Todas las Marcas</option> </select>

y mas bajao tengo:

<%
StrMarca = Request("CobMarca")
If StrMarca = "Todas las Marcas" then%>
<option>Todos los modelos</option> <option>--------------------------------------------</option>
</select>
<%End If%>

y no funciona, q estoy haciendo mal?

Pakico
13 de Junio del 2002
Con la explicacion es algo dificil ayudarte, necesitaria algn dato ms, no s si tienes un solo fichero asp por el contrario son dos, uno donde tienes el formulario, cuyo action es el segundo, y un segndo que se encarga de recibir los datos del formulario del primero y hacer lo que deseas con ellos. No puedes tenerlo todo en la mismo asp, pues el formulario no lo puedes tratar asta que no lo envies, con submit, al servidor (action, asp que recoge el formulario)

Joe Pe?
13 de Junio del 2002
En este caso se trata de un solo archivo .ASP.
Mi lo que quiero hacer es que cuando cargue la pgina me valide lo siguiente:
Tengo dos ComboBox verticalmente, uno encima del otro. Entonces, cuando cargue la pgina que pregunte:
Si el texto que tiene el Combobox 1 es "Todas las Marcas" entonces, que el Combo de abajo en los opction me ponga:
<option>Todos los modelos</option>
<option>--------------------------------------------</option>
</select>

Espero haberme explicado bien a ver si me das una manita.

Joe Pe?
13 de Junio del 2002
If document.BusquedaAvanzada.CobMarca.options(0).text = "Honda" then
document.BusquedaAvanzada.CobModelo.options(0).Text="Civic"
End if

Dios mio y como rayos es que eso se hace???? :'( me voy a volver loco.
Si le quito el If funciona perfectamente, pero entonces no tengo ninguna condicion... :@

rapomon
13 de Junio del 2002
'Que lio... vamos a ver, lo que quieres es que cuando cambie una lista que salgan en la segunda los datos filtrados, no?

'Por ejemplo tienes la siguiente conexin:

cnConexion = "la que sea"

'Y las siguientes tablas relacionadas (una marca varios modelos) y queremos que cuando seleccionemos una marca de la primera de las listas aparezcan en la segunda lista los modelos relacionados:
'Tabla: MARCAS (PK_ID_MARCA, NOMBRE_MARCA)
'Tabla: MODELOS (PK_ID_MODELO, FK_ID_MARCA, NOMBRE_MODELO)

'Tenemos una lista que cargamos de forma dinmica con los tipos de marca mas un elemento sin id que aades a mano con todas las marcas.
'Al select le aadimos el evento de javascript onChange para que cuando se seleccione un elemento volvamos a cargar esta pgina pasando por el QueryString la variable pk_id_marca con el id de la marca seleccionada en la lista, de esta forma podemos cargar en la lista secundaria slo aquellos modelos relacionados con dicha marca.
<select name="lista1" onChange="location.replace(location.href+'?pk_id_marca='+this.options[this.options.selectedIndex].value);">
<option value="">Todas las marcas</option>
<%
Set rsMarcas = Server.CreateObject("ADODB:Recordset")
rsMarcas.Open "select * from marcas", cnConexion
Do Until rsMarcas.EOF
%><option value="<%= rsMarcas("pk_id_marca") %>" <% If Request.QueryString("pk_id_marca") = CStr(rsMarcas("pk_id_marca")) Then %>selected<% End If %>><%= rsMarcas("nombre_marca") %></option><%
rsMarcas.MoveNext
Loop
rsMarcas.Close
Set rsMarcas = Nothing
%>
</select>
<%
Set rsModelos = Server.CreateObject("ADODB:Recordset")
'Ahora dependiendo de si hemos seleccionado alguna marca o todas generamos la correspondiente consulta:
If Request.QueryString("pk_id_marca") <> "" Then
strSql = "select * from modelos where fk_id_marca = " & Request.QueryString("pk_id_marca")
Else
strSql = "select * from modelos"
End If
rsModelos.Open strSql, cnConexion
Do Until rsModelos.EOF
%><option value="<%= rsModelos("pk_id_modelo") %>"><%= rsModelos("nombre_modelo") %></option><%
rsModelos.MoveNext
Loop
rsModelos.Close
Set rsModelos = Nothing

'Espero que esta pgina os sirva de ayuda, no es muy complicado, espero que lo pillis.
'Tambin espero no haberme confundido en nada.
'Un saludo.
%>
</select>

rapomon
13 de Junio del 2002
<%'Jeje, me faltaban unas cosillas, el cdigo definitivo sera este...%>
<html>
<body>
<form name="marcas" action="consultar_modelo.asp" method="post">
<select name="lista1" onChange="location.replace(location.href+'?pk_id_marca='+this.options[this.options.selectedIndex].value);">
<option value="">Todas las marcas</option>
<%
Set rsMarcas = Server.CreateObject("ADODB:Recordset")
rsMarcas.Open "select * from marcas", cnConexion
Do Until rsMarcas.EOF
%><option value="<%= rsMarcas("pk_id_marca") %>" <% If Request.QueryString("pk_id_marca") = CStr(rsMarcas("pk_id_marca")) Then %>selected<% End If %>><%= rsMarcas("nombre_marca") %></option><%
rsMarcas.MoveNext
Loop
rsMarcas.Close
Set rsMarcas = Nothing
%>
</select>

<select name="lista2">
<%
Set rsModelos = Server.CreateObject("ADODB:Recordset")
'Ahora dependiendo de si hemos seleccionado alguna marca o todas generamos la correspondiente consulta:
If Request.QueryString("pk_id_marca") <> "" Then
strSql = "select * from modelos where fk_id_marca = " & Request.QueryString("pk_id_marca")
Else
strSql = "select * from modelos"
End If
rsModelos.Open strSql, cnConexion
Do Until rsModelos.EOF
%><option value="<%= rsModelos("pk_id_modelo") %>"><%= rsModelos("nombre_modelo") %></option><%
rsModelos.MoveNext
Loop
rsModelos.Close
Set rsModelos = Nothing

'Espero que esta pgina os sirva de ayuda, no es muy complicado, espero que lo pillis.
'Tambin espero no haberme confundido en nada.
'Un saludo.
%>
<input type="submit" name="Consultar modelo de la marca seleccionada">
</select>
</form>

</body>
</html>

Joe Pe?
13 de Junio del 2002
El codigo no est dificil, pero no entiendo esto:
location.replace(location.href+'?pk_id_marca='+this.options[this.options.selectedIndex].value);

Se que el evendo se dar cuando haya un cambio en el ComboBox de Marcas, osea en el evento OnChange, pero porque ahi que poder tantas cosas, podras esplicarme esa lnea de cdigo? que significa cada cosa?

Joe Pe?
13 de Junio del 2002
Tambin, porque hacer esto?
Set rsMarcas = Nothing
-----------------------------

rapomon
13 de Junio del 2002
El Set rsMarcas = Nothing es una forma de destruir el objeto, para que no quede basura en la memoria del servidor, tengo la costumbre de hacerlo.

En cuanto a la siguiente lnea...

location.replace(location.href+'?pk_id_marca='+this.options[this.options.selectedIndex].value);

La funcin de javascript location.replace('destino.html') sustituye la pgina actual por la nueva obligando al explorador pedrsela de nuevo al servidor sin que ste use una copia cacheada. El valor que le paso a la funcin es la pgina web actual concatenada con el parmetro pk_id_marca y su valor (correspondiente con el id del elemento o marca actualmente seleccionada en la primera de las listas).

Espero que sta esa suficiente explicacin, un saludo.

Ricardo
13 de Junio del 2002
Aparentemente creo que lo que tienes mal es la manera de recoger los datos deberias recogerlo de la siguiente manera si la variable viene por la barra de direccion recogelo como request.querystring("variable")
si viene por formulario osea por metodo post
recogela por request.form("variable")

espero que te sirva de ayuda un saludo Ricardo