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

menu con elementos de una consulta sql

Estas en el tema de menu con elementos de una consulta sql en el foro de ASP Clásico en Foros del Web. Hola, estoy haciendo una aplicacion en la cual, necesito que un campo de tipo menu tenga diferentes opciones. La plicación tendrá que ir a buscar ...
  #1 (permalink)  
Antiguo 07/02/2004, 14:50
 
Fecha de Ingreso: enero-2004
Ubicación: bcn
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Exclamación menu con elementos de una consulta sql

Hola,
estoy haciendo una aplicacion en la cual, necesito que un campo de tipo menu tenga diferentes opciones. La plicación tendrá que ir a buscar estas opciones a una base de datos que está en el servidor.
he puesto este codigo en el elemento de tipo menu, pero no me funciona. A ver si me podeis ayudar:

<select name="centro" id="centro">
<option value="0">(Seleccionar Centro)</option>
<%
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd1.mdb"))
set oStr = "SELECT * FROM centro"
set oRs = oConn.Execute(strSQL)
i=1
Do While Not oRS.Eof
Response.Write("<option value='" & i & "'")
Response.Write(">" & oRs("centro") & "</option>")
oRS.MoveNext
i=i+1
loop
oConn.Close
set oConn = nothing
%>
</select>

Muchas Gracias por adelantado
  #2 (permalink)  
Antiguo 07/02/2004, 15:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Y qué es lo que no funciona?


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 07/02/2004, 15:17
 
Fecha de Ingreso: enero-2004
Ubicación: bcn
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Pues, no se carga nada en el menu.... sale vacio.
Y despues del menu, ya no aparecen los demás objetos del formulario.
  #4 (permalink)  
Antiguo 07/02/2004, 15:23
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Y así?

<%
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd1.mdb"))
set oStr = "SELECT * FROM centro"
set oRs = oConn.Execute(strSQL)
i=1
%>
<select name="centro" id="centro">
<option value="0">(Seleccionar Centro)</option>
<%
Do While Not oRS.Eof
%>
<option value="<%=i%>"><%=oRs("centro")%></option>
<%
oRS.MoveNext
i=i+1
loop
%>
</select>
<%
oConn.Close
set oConn = nothing
%>
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 07/02/2004, 15:33
 
Fecha de Ingreso: enero-2004
Ubicación: bcn
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Gracias,
pero no, tampoco me funciona. me sigue pasando lo mismo
  #6 (permalink)  
Antiguo 07/02/2004, 15:37
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Muy extraño, a menos que el rs viniera vacío, pero no hay razón por la cual no carguen los siguientes elementos del formulario, no creo que el problema vaya por este rs, pon un poco más de código
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 07/02/2004, 16:43
 
Fecha de Ingreso: enero-2004
Ubicación: bcn
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
no hay mucho mas codigo, pongo aquí el codigo para ese objeto(menu):

<hr width="80%">
<table width="80%" border="0" align="center">
<tr>
<td width="22%"><strong>Centro habitual:*</strong></td>
<td width="28%">
<%
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd1.mdb"))
set oStr = "SELECT * FROM centro"
set oRs = oConn.Execute(strSQL)
i=1
%>
<select name="centro" id="centro">
<option value="0">(Seleccionar Centro)</option>
<%
Do While Not oRS.Eof
%>
<option value="<%=i%>"><%=oRs("centro")%></option>
<%
oRS.MoveNext
i=i+1
loop
%>
</select>
<%
oConn.Close
set oConn = nothing
%>

</select></td>
<td width="25%">&nbsp;</td>
<td width="25%">&nbsp;</td>
</tr>
</table>
  #8 (permalink)  
Antiguo 07/02/2004, 17:00
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98

Ok, veamos así:

<%
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd1.mdb"))
StrSQL = "SELECT * FROM centro"
set oRs = Server.CreateObject("ADODB.Recordset")
oRs.Open strSQL, oConn, 3, 3
i=1
%>
<select name="centro" id="centro">
<option value="0">(Seleccionar Centro)</option>
<%
Do While Not oRS.Eof
%>
<option value="<%=i%>"><%=oRs("centro")%></option>
<%
oRS.MoveNext
i=i+1
loop
%>
</select>
<%
oConn.Close
set oConn = nothing
%>
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 07/02/2004, 17:19
 
Fecha de Ingreso: enero-2004
Ubicación: bcn
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
De acuerdo

Muchas Gracias!!!!!!
Ya funciona!!!!
Te agradezco mucho tu ayuda! Merci
  #10 (permalink)  
Antiguo 08/02/2004, 05:58
 
Fecha de Ingreso: enero-2004
Ubicación: bcn
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Una última pregunta,
podrías explicarme, o referenciarme a algún manual donde explicase el uso de "<%" y "%>", porque tengo que hacer otras consultas, y me pasa algo parecido.
He estado mirando el ejemplo, y me imagino que será por eso, pero es que no termino de entender cuando hay que poner estos símbolos y cuando no.
Gracias

Ah, y otra cosa, ¿para que sirven los 3's en la siguiente linea?:
oRs.Open strSql, oConn, 3 , 3

Última edición por ana1981; 08/02/2004 a las 06:00
  #11 (permalink)  
Antiguo 08/02/2004, 19:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Si ana, es sencillo, el uso de <%%> es para el código que se ejecutará en el servidor, esto es que se pre-procesará para enviar después HTML al cliente, o sea, cualquier lenguaje de programación que interprete ASP, que por default será VB, aunque también lo puedes hacer con javascript server side...de tal suerte que puedes incluso enviar strings como HTML dentro de scripts como lo estabas haciendo:

Esto es HTML puro:
<center><font face arial size=2>Hola Mundo</font></center>

Esto es HTML envíado como string.

<%
Response.Write("<center><font face arial size=2>Hola Mundo</font></center>")
%>

Al caso el efecto es lo mismo, aunque dicen por allí que es un poco más rápido de la segunda forma, quien sabe cuantas milésimas de segundo

Ahora, cuando usarlo y cuando no? pues creo que eso es a gusto del programador, para mi me resulta más cómodo intercalar HTML puro y dejar entre <%%> sólo la parte lógica.

El problema que tenías en realidad no era ese...ve un poco más a detalle el código:

código original:
Cita:
<%
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd1.mdb"))
set oStr = "SELECT * FROM centro"
set oRs = oConn.Execute(strSQL)

i=1
Do While Not oRS.Eof
El código que funcionó
Cita:
<%
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bd1.mdb"))
StrSQL = "SELECT * FROM centro"
set oRs = Server.CreateObject("ADODB.Recordset")
oRs.Open strSQL, oConn, 3, 3

i=1
%>
Ahora si te fijas, primero estás creando como objeto la sentencia SQL que tu le llamaste oStr, después creas un recordset, mediante el método execute de la conexión activa, pero le estás pasando una variablle strSQL, dónde está en realidad la sentencia?? por alguna razón no te enviaba error y solo te bloqueaba el script...

en el código que arreglamos, hicimos una variable strSQL con la sentencia SQL, después creamos un recordset y lo abrimos(oRs), sin invocar al método execute de la conexión, sino pasándole la sentencia, la conexión activa y para contestar a tu segunda pregunta, el cursor con el cuál vamos a abrir el recordset y claro, el tipo de cerrojo con la que se abrirá ese recordset.

Qué es un cursor?
El recordset es un objeto por si mismo, el cual tiene propiedades, métodos y eventos.
Un cursor te permite moverte a través del objeto recordset, hay diferentes tipos de cursores, en este caso el 3, te permite desplazarte libremente por el recordset, esto es para adelante, para atrás, al último y al primer registro, pero hay ocasiones en las cuales quizás no lo requieres o por alguna razón solo quieres que se mueva hacia adelante y que no pueda retroceder, pues el manejar estos cursores servirá para este fin.

Qué es un cerrojo?
Es un permiso temporal con el cuál tu puedes trabajar los campos de tu DB, y también hay varios, dependiendo de la naturaleza de tu aplicación y de la seguridad que quieras que tengan tus datos, puedes implementar el que mas se ajuste a tus necesidades, imagínate que tienes una DB con una alta concurrencia, pero que no quieres que todo mundo tenga acceso al mismo tiempo a un registro para modificarlo, entonces emplearías un cerrojo de tipo pesimista, en el cual bloqueará temporalmente dicho registro para que no pueda ser alterado, en tanto no se desocupe.

Espero que te quede un poco mas claro.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 09/02/2004, 16:19
 
Fecha de Ingreso: enero-2004
Ubicación: bcn
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Ok, gracias
pero sigo sin entender una cosa. si el uso de <%%> es para el código que se ejecutará en el servidor, es decir que se preprocesará para enviar después HTML al cliente, se supone que si yo pongo:

<% lo que sea %>

todo lo que haya dentro de estos dos símbolos, se entiende que se ha de preprocesar, ¿no?

entonces, porque si pongo un if, tengo que poner los símbolos otra vez?

y otra cosa, en algun ejemplo he visto que a veces hay símbolos <% que no se cierran. Porque pasa esto?

Última edición por ana1981; 09/02/2004 a las 17:13
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:46.