Mo me toda el dato del ComboBox --ASP--
Tengo esto en mi página:
<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?
<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?
Con la explicacion es algo dificil ayudarte, necesitaria algún dato más, 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 segúndo 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)
En este caso se trata de un solo archivo .ASP.
Mi lo que quiero hacer es que cuando cargue la página me valide lo siguiente:
Tengo dos ComboBox verticalmente, uno encima del otro. Entonces, cuando cargue la página 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.
Mi lo que quiero hacer es que cuando cargue la página me valide lo siguiente:
Tengo dos ComboBox verticalmente, uno encima del otro. Entonces, cuando cargue la página 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.
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... :@
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... :@
'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 conexión:
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 dinámica con los tipos de marca mas un elemento sin id que añades a mano con todas las marcas.
'Al select le añadimos el evento de javascript onChange para que cuando se seleccione un elemento volvamos a cargar esta página 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 sólo 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 página os sirva de ayuda, no es muy complicado, espero que lo pilléis.
'También espero no haberme confundido en nada.
'Un saludo.
%>
</select>
'Por ejemplo tienes la siguiente conexión:
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 dinámica con los tipos de marca mas un elemento sin id que añades a mano con todas las marcas.
'Al select le añadimos el evento de javascript onChange para que cuando se seleccione un elemento volvamos a cargar esta página 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 sólo 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 página os sirva de ayuda, no es muy complicado, espero que lo pilléis.
'También espero no haberme confundido en nada.
'Un saludo.
%>
</select>
<%'Jeje, me faltaban unas cosillas, el código definitivo sería 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 página os sirva de ayuda, no es muy complicado, espero que lo pilléis.
'También espero no haberme confundido en nada.
'Un saludo.
%>
<input type="submit" name="Consultar modelo de la marca seleccionada">
</select>
</form>
</body>
</html>
<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 página os sirva de ayuda, no es muy complicado, espero que lo pilléis.
'También espero no haberme confundido en nada.
'Un saludo.
%>
<input type="submit" name="Consultar modelo de la marca seleccionada">
</select>
</form>
</body>
</html>
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, podrías esplicarme esa línea de código? que significa cada cosa?
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, podrías esplicarme esa línea de código? que significa cada cosa?
También, porque hacer esto?
Set rsMarcas = Nothing
-----------------------------
Set rsMarcas = Nothing
-----------------------------
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 línea...
location.replace(location.href+'?pk_id_marca='+this.options[this.options.selectedIndex].value);
La función de javascript location.replace('destino.html') sustituye la página actual por la nueva obligando al explorador pedírsela de nuevo al servidor sin que éste use una copia cacheada. El valor que le paso a la función es la página web actual concatenada con el parámetro 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 explicación, un saludo.
En cuanto a la siguiente línea...
location.replace(location.href+'?pk_id_marca='+this.options[this.options.selectedIndex].value);
La función de javascript location.replace('destino.html') sustituye la página actual por la nueva obligando al explorador pedírsela de nuevo al servidor sin que éste use una copia cacheada. El valor que le paso a la función es la página web actual concatenada con el parámetro 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 explicación, un saludo.
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
si viene por formulario osea por metodo post
recogela por request.form("variable")
espero que te sirva de ayuda un saludo Ricardo
