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

Mi humilde aporte. Combos enlazados.

Estas en el tema de Mi humilde aporte. Combos enlazados. en el foro de ASP Clásico en Foros del Web. Me atrevo a dejarles mi humilde aporte sobre el tema de los combos enlazados. El tema es que los combos necesitan un reenvio de pagina ...
  #1 (permalink)  
Antiguo 22/03/2003, 19:39
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 23 años, 3 meses
Puntos: 1
Mi humilde aporte. Combos enlazados.

Me atrevo a dejarles mi humilde aporte sobre el tema de los combos enlazados.

El tema es que los combos necesitan un reenvio de pagina para trabajar. Buscando para mi este tipo de codificados nunca pude lograr que anduvieran y menos que me sirvan.
La cosa funciona con un poco de javascript y algunos remiendos, pero a mi me funciona. No sera muy profesional pero anda.

La parte javascript es esta:

<script>
function nombre_funcion(){
document.location.href='form1_carga.asp?nombre_fun cion='+document.nombre_del_form.name_del_combo_que _llama_la_function.options[document.nombre_del_form.name_del_combo_que_llama_ la_function.selectedIndex].value
}
</script>

Ejemplo:
<%
Proveedor = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\Camino_virtual_a_la_carpeta_donde _esta_la_base") & "\nombre_de_base.mdb;"

base = Proveedor

base = Request.Querystring("base")
%>

<script>
function carga(){
document.location.href='form1_carga.asp?carga='+do cument.form1.sel_nclie.options[document.form1.sel_nclie.selectedIndex].value
}
</script>

<body>
<select name= "sel_nclie" size="1" OnChange="carga()" >
<%
if isnull(sel_prov) then
response.write "<option value='Seleccionar' selected>Seleccionar 1</option>"
elseif sel_prov=null then
response.write "<option value='Seleccionar' selected>Seleccionar 2</option>"
elseif sel_prov="" then
response.write "<option value='Seleccionar' selected>Seleccionar 3</option>"
elseif sel_prov="Seleccionar" then
response.write "<option value='Seleccionar' selected>Seleccionar 4</option>"
else
response.write "<option value='"&sel_prov&"base="&base&"' selected>"&sel_prov&"</option>"
end if

Set rst = Server.CreateObject("ADODB.recordset")
sql="select codigo from Tabla_clientes_con_codigo order by codigo"
rst.Open sql, strProvider

do while not rst.EOF
response.write "<option value='"&rst("codigo")&"&base="&base&"'>"&rst("cod igo")&"</option>"
rst.movenext
loop
rst.close
%>
</select>

sigue mas abajo ....
__________________
Carlunchos
  #2 (permalink)  
Antiguo 22/03/2003, 19:41
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 23 años, 3 meses
Puntos: 1
continuacion ....


<%
if carga<>"" then
Set rst = Server.CreateObject("ADODB.recordset")
sql1="SELECT tx_razon_social FROM Tabla_clientes_ccodigo where codigo="&carga&" GROUP BY tx_razon_social ORDER BY tx_razon_social"
rst.Open sql1, strProvider
clie=rst("tx_razon_social")
rst.close
end if
%>

fijense lo siguiente:

1) el script va entre el <Head> y el </head>
2) la pagina .asp necesita reenviarse.
3) por eso en la variable base asigno la cadena de conexion o proveedor de la base de datos.
4) por eso al reenviar la pagina recupero con un querystring el contenido de la variable base.
5) en el name del select hago la llamada a la function.
6) fijarse que en el else le paso la variable base al value del combo.
7) luego con el do while cargo el combo con los datos de la tabla y tambien le paso la variable base, sino cuando reenvio pierdo la cadena de conexion y el combo no se cargaria.

8) luego pregunto si el valor de "carga" es distinto de cadena vacia, como se que va ha ser asi hago la operacion que necesite. En el ejemplo asigno a la variable "clie" el valor del campo tx_razon_social.

De acuerdo a esto, puedo seleccionar un dato del combo y cargar un dato asociado de la base en un textbox, o cargar datos de otra tabla en otro combo. Por ejemplo cuando tengo una tabla con las Provincias y en otro combo cargo las localidades. Y si necesito cargar las calles de esa localidad tambien puedo hacerlo.
Esto a simple vista parece extraño, pero los invito a ponerlo en practica.
No olvidar que se necesita crear una function por cada combo que necesito cargar, es decir:
1) si un combo carga a otro = una function
2) si un combo carga a otro y este a otro = dos function.

Seguramente todo esto es perfectible, y si alguien lo perfecciona haganmelo saber, asi aprendo un poco mas.

Espero les sirva.

Saludos.


PD: Juansan espero te sirva, sino lo vemos nuevamente.
__________________
Carlunchos
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 08:14.