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

De Combo Con Bd A Campo De Texto

Estas en el tema de De Combo Con Bd A Campo De Texto en el foro de ASP Clásico en Foros del Web. hola tengo un formulario el cual tiene un combo y un campo de texto, en el combo mando a llamar los datos de una base ...
  #1 (permalink)  
Antiguo 11/07/2003, 15:22
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 2 meses
Puntos: 4
Exclamación De Combo Con Bd A Campo De Texto

hola

tengo un formulario el cual tiene un combo y un campo de texto,

en el combo mando a llamar los datos de una base de datos la cual

genera una lista de productos en el combo,

quisiera que al seleccionar el combo de productos, cada que seleccione

un producto me apareciera el precio correspondiente a ese producto en

el campo de texto.

en la base de datos estan los campos PRODUCTO VALOR_PRODUCTO.


EL CODIGO QUE TENGO PARA LLAMAR LOS DATOS Y LLENAR EL COMBO ES:

Código:
<%  
	Dim sql2
	Set rs2 = Server.CreateObject("ADODB.Recordset")
	sql2="SELECT distinct PRODUCTO FROM PRODUCTOS WHERE PRODUCTO 

ORDER BY PRODUCTO  ASC"
	rs2.Open sql2, con, 3, 3
	   %>
          <select name="producto">
            <% while Not rs2.EOF %>
            <option 

value="<%=Ucase(rs2("PRODUCTO"))%>"><%=Ucase(rs2("PRODUCTO"))%></option

>
            <% rs2.MoveNext 
Wend %>
          </select>

ESPERO ME PUEDAN COLABORAR
EN RESUMIDAS CUENTAS:

AL SELECCIONAR UN PRODUCTO DE UN COMBO QUE ME COLOQUE EL PRECIO DE ESE

PRODUCTO EN UN CAMPO DE TEXTO.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #2 (permalink)  
Antiguo 12/07/2003, 14:16
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 24 años
Puntos: 2
HOla

la solucion que te pongo a continuacion no es lo que se dice una solucion ASP, sino mas bien solucion javascript, pero la verdad es que fue lo unico que se me ocurrio para hacer lo que quieres. Habran metodos mejores, pero no se como....yo solo di pa esto...


Código:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript1.2">

<%  
	'esta seccion del codigo lo que hace es crear dos vectores javascript que almacenan 
	'los nombres de la productos y los valores de los mismos respectivamente.
	'Una vez creados los vectores javascript, el resto de la pagina
	var1 = "vectorProducto  = new Array("
	var2 = "vectorValorProducto = new Array("
	
	set conexion = Server.CreateObject("ADODB.Connection")
	conexion.connectionString = "prueba"
	conexion.open

	Set rs2 = Server.CreateObject("ADODB.Recordset")
	sql2="SELECT distinct PRODUCTO,VALOR_PRODUCTO FROM PRODUCTOS WHERE PRODUCTO ORDER BY PRODUCTO  ASC"
	rs2.Open sql2, conexion, 3, 3
	
    do while Not rs2.EOF
		var1 = var1 & "'" & Ucase(rs2("PRODUCTO")) & "',"
		var2 = var2 & "'" & Ucase(rs2("VALOR_PRODUCTO")) & "',"		
	    rs2.MoveNext	
	loop
	
	response.write Left(var1,Len(var1)-1) & ");"
	response.write Left(var2,Len(var2)-1) & ");"		
%>
	
	//Esta funcion te cargara el combo con los valores de los vectores
	function cargaCombo(){
        formulario = document.formularioProductosPrecios;		

        formulario.productos.length = vectorProducto.length;
		
        for (var i=0; i < vectorProducto.length; i++){
                formulario.productos.options[i].value = i;
                formulario.productos.options[i].text= vectorProducto[i];
        }

		formulario.productos[0].selected = true;
	}	

	//Esta funcion coloca el nuevo precio al cambiar de producto en el combo
	function cargaCampoTexto(){
        formulario = document.formularioProductosPrecios;		
		valor = formulario.productos[formulario.productos.selectedIndex].value;	
		formulario.precio.value = vectorValorProducto[valor];
	}
		
</script>
</head>

<body onLoad="cargaCombo();cargaCampoTexto();">

<form name="formularioProductosPrecios">
	<select name="productos" onChange="cargaCampoTexto()">
		<option>-
	</select>
	<br>
	<input type="text" name="precio">
</form>

</body>
</html>

Ej ejemplo como esta funciona bien (claro, con la base de datos, los campos correctos, etc..). Te pongo todo el codigo que me funciona, ya tu lo modificas como creas si al final lo usas...




ToKaTa.
__________________

"Si pudieras volver.....¿.lo harias?"
  #3 (permalink)  
Antiguo 13/07/2003, 11:23
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 2 meses
Puntos: 4
hola
muchisimas gracias, me funcoina a la perfeccion , solo pasa una cosa, el value resultante de cada elemento del combo es un numero no el nombre del producto,

por ejemplo:

<option value="0">Cera</option>
<option value="1">CMC</option>
<option value="2">Agua</option>


no deberia quedar asi con numeros sino qeu el value resultante deberia ser el mismo nombre asi:

<option value="Cera">Cera</option>
<option value="CMC">CMC</option>
<option value="Agua">Agua</option>

que cambio deberia hacerle para que me funcione asi?
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com

Última edición por lexus; 13/07/2003 a las 11:25
  #4 (permalink)  
Antiguo 13/07/2003, 13:16
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 24 años
Puntos: 2
HOla!

te marco en negrita lo que cambie (una linea de la funcion cargaCombo(), y la funcion cargaCampoTexto()).

Código:
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript1.2">

<%  
	'esta seccion del codigo lo que hace es crear dos vectores javascript que almacenan 
	'los nombres de la productos y los valores de los mismos respectivamente.
	'Una vez creados los vectores javascript, el resto de la pagina
	var1 = "vectorProducto  = new Array("
	var2 = "vectorValorProducto = new Array("
	
	set conexion = Server.CreateObject("ADODB.Connection")
	conexion.connectionString = "cvo_odbc"
	conexion.open

	Set rs2 = Server.CreateObject("ADODB.Recordset")
	sql2="SELECT distinct PRODUCTO,VALOR_PRODUCTO FROM PRODUCTOS WHERE PRODUCTO ORDER BY PRODUCTO  ASC"
	rs2.Open sql2, conexion, 3, 3
	
	do while Not rs2.EOF
		var1 = var1 & "'" & Ucase(rs2("PRODUCTO")) & "',"
		var2 = var2 & "'" & Ucase(rs2("VALOR_PRODUCTO")) & "',"		
	    rs2.MoveNext	
	loop
	
	response.write Left(var1,Len(var1)-1) & ");"
	response.write Left(var2,Len(var2)-1) & ");"		
%>
	
	//Esta funcion te cargara el combo con los valores de los vectores
	function cargaCombo(){
        formulario = document.formularioProductosPrecios;		

        formulario.productos.length = vectorProducto.length;
		
        for (var i=0; i < vectorProducto.length; i++){
                formulario.productos.options[i].value = vectorProducto[i];
                formulario.productos.options[i].text= vectorProducto[i];
        }

		formulario.productos[0].selected = true;
	}	

	//Esta funcion coloca el nuevo precio al cambiar de producto en el combo
	function cargaCampoTexto(){
		formulario = document.formularioProductosPrecios;		
		formulario.precio.value = vectorValorProducto[formulario.productos.selectedIndex];
	}
		
</script>
</head>

<body onLoad="cargaCombo();cargaCampoTexto();">

<form name="formularioProductosPrecios">
	<select name="productos" onChange="cargaCampoTexto()">
		<option>-
	</select>
	<br>
	<input type="text" name="precio">
</form>

</body>
</html>

Lo pruebas, y si no es lo que dices, lo intentamos de nuevo




ToKaTa.
__________________

"Si pudieras volver.....¿.lo harias?"
  #5 (permalink)  
Antiguo 14/07/2003, 09:35
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 23 años, 2 meses
Puntos: 4
muchisimas gracias, ya me funciona a la perfeccion

__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
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 19:18.