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

Mostrar descripcion en lista y guardar ID en base de datos!

Estas en el tema de Mostrar descripcion en lista y guardar ID en base de datos! en el foro de ASP Clásico en Foros del Web. Hola buen dia webmasters, tengo una pequeña duda, bueno mi problema es el siguiente: Estoy guardando datos en una base de datos pero mi problema ...
  #1 (permalink)  
Antiguo 29/03/2011, 10:24
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Pregunta Mostrar descripcion en lista y guardar ID en base de datos!

Hola buen dia webmasters, tengo una pequeña duda, bueno mi problema es el siguiente:

Estoy guardando datos en una base de datos pero mi problema es que... les muestro el codigo

PRUEBA.ASP

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conexiondb.asp" -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<form action="prueba2.asp" method="post" >
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From personal Order By Id_personal"
set RS = Conex.execute(sSQL)
%>
Responsable:
<select name="Dato1" class="label_list" id="Dato1">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>

<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p><%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From tipo_pc Order By Id_tipo_pc"
set RS = Conex.execute(sSQL)
%>
Tipo:
<select name="Dato2" class="label_list" id="Dato2">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>

<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>
Modelo:
<input type="text" name="Dato3" id="Dato3" />
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From marcas Order By nombre"
set RS = Conex.execute(sSQL)
%>
Marca::
<select name="Dato4" class="label_list" id="Dato4">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>No. Serie:
<input type="text" name="Dato5" id="Dato5" />
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From ram Order By nombre"
set RS = Conex.execute(sSQL)
%>
Memori Ram:
<select name="Dato6" class="label_list" id="Dato6">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>Disco Duro:
<input type="text" name="Dato7" id="Dato7" />
<p>Procesador y Velocidad:
<input type="text" name="Dato8" id="Dato8" />
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From soperativos Order By nombre"
set RS = Conex.execute(sSQL)
%>
Sistema Operativo:
<select name="Dato9" class="label_list" id="Dato9">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From office Order By nombre"
set RS = Conex.execute(sSQL)
%>
Microsoft Office:
<select name="Dato10" class="label_list" id="Dato10">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From antivirus Order By nombre"
set RS = Conex.execute(sSQL)
%>
Antivirus:
<select name="Dato11" class="label_list" id="Dato11">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From estatus Order By nombre"
set RS = Conex.execute(sSQL)
%>
Estatus de Limpieza:
<select name="Dato12" class="label_list" id="Dato12">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From sucursal Order By nombre"
set RS = Conex.execute(sSQL)
%>
Sucursal:
<select name="Dato13" class="label_list" id="Dato13">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From dueño Order By nombre"
set RS = Conex.execute(sSQL)
%>
Dueño del equipo:
<select name="Dato14" class="label_list" id="Dato14">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
<option selected="selected"><%=RS("nombre")%>
<%RS.movenext
Loop
RS.Close
set RS = Nothing
%>
</option>
</select>
<p>
<input type="submit" name="boton" id="boton" value="Enviar" />
</form>
<%
Conex.close
%>
<span class="cuadromsg"><%=request.querystring("msj")%></span>
</body>
</html>

PRUEBA2.ASP

<%@ Language="VBScript" %>
<!--#include file="conexiondb.asp" -->
<html>
<head>
<title>Ingreso de Datos</title>
</head>
<%
Dim Tabla
Set Tabla = Server.CreateObject("ADODB.Recordset")
Dim Temp
'buscamos los datos
Temp="Select * From equipo Where UCase(Id_personal)='" & UCase(Request("Dato1")) & "' And UCase(Id_tipo_pc)='" & UCase(Request("Dato2")) & "' And UCase(modelo)='" & UCase(Request("Dato3")) &"'"
Tabla.Open Temp,Conex,2,3,1
'si no se repiten agregamos los datos a nuestro buscador
If Tabla.BOF And Tabla.EOF Then
Tabla.AddNew
Tabla("Id_personal") = Request("Dato1")
Tabla("Id_tipo_pc") = Request("Dato2")
Tabla("modelo") = Request("Dato3")
Tabla.Update
'fin del Script
Response.redirect("prueba.asp?msj=USUARIO REGISTRADO CORRECTAMENTE")
%>
<font face="Tahoma" size="2"><b><i>Ingreso de datos completado</i></b></font></p>
<%
'si el campo ya existe para no hacer dobles nos da este mensaje
Else
response.redirect("prueba.asp?msj=ESTE USUARIO YA EXISTE, VERIFICA TUS DATOS")
'cerramos la conexion
Tabla.Close
Conex.Close
End If
%>

Mi duda es, estos datos en las listas del PRUEBA.ASP estoy trayendo datos de una base de datos pero al momento de guardarlos quisiera que me guardara el ID no el texto en si por ejemplo, Selecciono de la lista -> COMPUTADORAS este dato estoy trayendo de la base de datos pero en si el ID de COMPUTADORAS es 1 y el dato que quisiera guardar es "1" no "COMPUTADORAS" si me doy a entender jajajaja! es algo confuso espero su apoyo saludos...
  #2 (permalink)  
Antiguo 29/03/2011, 10:40
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 5 meses
Puntos: 7
Respuesta: Mostrar descripcion en lista y guardar ID en base de datos!

te recomiendo esta funcion que cree hace tiempo:

Código ASP:
Ver original
  1. function PonerCombo(vStrSQL ,nombrecombo,eventoycuerpo)
  2.         set rsCombo = createobject("ADODB.Recordset")
  3.         on error resume next   
  4.         rsCombo.open vStrSQL, Conex
  5.         if err then
  6.             MandarError "Lo siento, " & err.description
  7.         end if
  8.         if not rsCombo.eof then
  9.             response.Write "<select name=""" & nombrecombo & """ id=""" & nombrecombo & """ " & eventoycuerpo & ">"
  10.             response.Write "<option selected value=""0"">[Seleccione]</option>"
  11.             do while not rsCombo.eof
  12.                 on error resume next
  13.                 selected = ""
  14.                 if request(nombrecombo)<>"" then
  15.                     if cstr(rsCombo(0)) = cstr(request(nombrecombo)) then selected = "selected"
  16.                 end if
  17.                 if not isnull(valoractual) then
  18.                     if cstr(rsCombo(0)) = cstr(valoractual) then selected = "selected"
  19.                 end if
  20.                 if err then err.clear
  21.                 response.Write "<option " & selected & " value=""" & rsCombo(0) & """>" & server.HTMLEncode(ucase(rsCombo(1))) & "</option>"
  22.                 rsCombo.movenext
  23.                 response.flush
  24.             loop
  25.             response.Write "</select>"
  26.             rsCombo.close
  27.         else
  28.             response.write "Sin datos que mostrar"
  29.         end if
  30.         set rsCombo = Nothing
  31.         CierraConexion
  32.         on error goto 0
  33.     end function

la pones en tu include

y para llamarle, segun tu caso seria asi (la consulta debe pasar dos campos, el id y el texto):

'Creamos la sentencia SQL y la ejecutamos
Código ASP:
Ver original
  1. sSQL="Select id,nombre From personal Order By Id_personal"
  2. 'imprimo el combo
  3. ponercombo sSQL, "Dato1","class=""label_list"" id=""Dato1"""

la variable valoractual es para decirle si queremos un valor en especifico, previamente debemos saber el valor, si lo omites, tomara el valor pasado por post o get, si es que se envio algun form


espero te ayude y funcione sin problemas, cualquier error, postealo
  #3 (permalink)  
Antiguo 29/03/2011, 14:28
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 1 mes
Puntos: 535
Respuesta: Mostrar descripcion en lista y guardar ID en base de datos!

Los <option> de los <select> son así:

<option value="un valor">una descripción</option>

lo que se guarda en la bd es el value. al parecer, de no existir value, request.form te regresa la descripción???? no sé, nunca se me ocurrió hacer eso!
__________________
...___...
  #4 (permalink)  
Antiguo 29/03/2011, 17:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Respuesta: Mostrar descripcion en lista y guardar ID en base de datos!

Si de echo intente agregar <option value"Id_pesonal"> pero lo que me guarda es el texto "Id_personal" no el ID 1 lo que me guarda la base de datos es texto ejemplo:

Responsable:
Fulanito

Tipo:
PC

y lo que yo quisiera en la base de datos seria asi:

Responsable:
1

Tipo:
2

Que serian los ID de la descripcion que yo muestro en los Listbox podria poner el ID pero me mostraria numeros y no tendria caso que me los mostrara si no que me mostrara la descripcion y guardara en la base de datos el " Numero ID "
  #5 (permalink)  
Antiguo 31/03/2011, 18:30
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 5 meses
Puntos: 7
Respuesta: Mostrar descripcion en lista y guardar ID en base de datos!

Cita:
Iniciado por rulasflavee Ver Mensaje
Si de echo intente agregar <option value"Id_pesonal">
No deberia ser asi?


Código ASP:
Ver original
  1. <option value"<%=Tabla("Id_pesonal")%>" >
  #6 (permalink)  
Antiguo 01/04/2011, 08:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Respuesta: Mostrar descripcion en lista y guardar ID en base de datos!

No por que marca error!
  #7 (permalink)  
Antiguo 02/04/2011, 00:40
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 5 meses
Puntos: 7
Respuesta: Mostrar descripcion en lista y guardar ID en base de datos!

hola, si pones que campos traes en las consultas, y tambien el error que te marca te podre ayudar mas.

por ejemplo asi debe quedar mas o menos tu combo
Código HTML:
Ver original
  1. <select name="cbo1" id="cbo1" >
  2.    <option value="1"selected>descripcion</option>
y lo que recuperas con el asp
Código ASP:
Ver original
  1. response.write request("cbo1")
Código resultado:
Ver original
  1. 1
es el valor o value del campo, en este ejemplo es 1.

Última edición por Joch_pa; 02/04/2011 a las 00:46

Etiquetas: descripcion, lista
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 06:56.