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

fallo en subconsulta

Estas en el tema de fallo en subconsulta en el foro de ASP Clásico en Foros del Web. Buenas, estoy empezando con ASP y seguro que he metido la gamba en este código. A ver si me podéis echar una mano. Muchas gracias ...
  #1 (permalink)  
Antiguo 28/07/2009, 05:02
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 15 años, 9 meses
Puntos: 0
fallo en subconsulta

Buenas, estoy empezando con ASP y seguro que he metido la gamba en este código. A ver si me podéis echar una mano. Muchas gracias

La BD es postgre y el error que me da es el siguiente

Tipo de error:
Error de compilación de Microsoft VBScript (0x800A0400)
Se esperaba una instrucción
/get.asp, línea 59
<%while not RS.eof


Código asp:
Ver original
  1. <%
  2. If Request.QueryString ("tag") = ""  then %>
  3. Error: no se han pasado todos los datos
  4. <%
  5. Else
  6. Dim reader, tag
  7. reader = Request.QueryString("reader")
  8. tag = Request.QueryString("tag")
  9. response.write "<B> TagHash = "& tag &"</B><BR><b>ReaderHash = "& reader &""
  10.  
  11. Dim Conex
  12. 'Creamos el objeto de conexion ahora...'
  13. Set Conex = Server.CreateObject ("ADODB.Connection")
  14. Conex.Open "driver={PostgreSQL};server=localhost; database=p_comercio; uid=postgres;pwd=admin"
  15. set RS = Server.CreateObject("ADODB.Recordset")
  16. 'RS.CursorType = 1
  17. 'RS.Open SQL, DbConn
  18. 'total=RS.RecordCount
  19.  
  20. 'Driver={PostgreSQL};Server=IP address;Port=5432;Database=myDataBase;Uid=myUsername;Pwd=myPassword;'
  21.  
  22. 'SQL = "SELECT * FROM reclamos"
  23. 'set DbConn = Server.CreateObject("ADODB.Connection")
  24. 'set RS = Server.CreateObject("ADODB.Recordset")
  25. 'DbConn.Open DSN_de_la_base_de_datos
  26. 'RS.CursorType = 1
  27. 'RS.Open SQL, DbConn
  28. 'total=RS.RecordCount
  29.  
  30. strQuery = "Select nombre from usuarios where id_usuarios=(Select usuarios_idusuarios from tarjetas_RFID where tag_hash="&tag&")"
  31.  
  32.  
  33.  
  34. Set RS = conex.Execute(strQuery)
  35.  
  36. <%while not RS.eof%>
  37. <%=RS("nombre")%><br>
  38. <%RS.MoveNext%>
  39. <%wend%>
  40. End If
  41. %>

Última edición por lmalvarez; 28/07/2009 a las 08:20
  #2 (permalink)  
Antiguo 28/07/2009, 06:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 3 meses
Puntos: 126
Respuesta: fallo en subconsulta

Hola, bienvenido al foro

Cambia esto

<%while not RS.eof%>

por esto

while not RS.eof%>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 28/07/2009, 06:24
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: fallo en subconsulta

Hola, gracias por responder tan rápido, pero sigue sin funcionar. He cambiado lo que me has dicho, pero sigue sin funcionar. Ahora me da el siguiente error:

Error de compilación de Microsoft VBScript (0x800A03F6)
Se esperaba 'End'
/get.asp, línea 62


Por cierto, que antes se me olvidó meter un trozo de código, y he editado el post.
  #4 (permalink)  
Antiguo 28/07/2009, 06:29
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: fallo en subconsulta

<%If Request.QueryString ("tag") = "" then %>

Error: no se han pasado todos los datos
<%

Else
Dim reader, tag
reader = Request.QueryString("reader")
tag = Request.QueryString("tag")
response.write "<B> TagHash = "& tag &"</B><BR><b>ReaderHash = "& reader &""

Dim Conex
'Creamos el objeto de conexion ahora...'
Set Conex = Server.CreateObject ("ADODB.Connection")
Conex.Open "driver={PostgreSQL};server=localhost; database=p_comercio; uid=postgres;pwd=admin"
set RS = Server.CreateObject("ADODB.Recordset")
'RS.CursorType = 1
'RS.Open SQL, DbConn
'total=RS.RecordCount

'Driver={PostgreSQL};Server=IP address;Port=5432;Database=myDataBase;Uid=myUserna me;Pwd=myPassword;'

'SQL = "SELECT * FROM reclamos"
'set DbConn = Server.CreateObject("ADODB.Connection")
'set RS = Server.CreateObject("ADODB.Recordset")
'DbConn.Open DSN_de_la_base_de_datos
'RS.CursorType = 1
'RS.Open SQL, DbConn
'total=RS.RecordCount

strQuery = "Select nombre from usuarios where id_usuarios=(Select usuarios_idusuarios from tarjetas_RFID where tag_hash="&tag&")"



Set RS = conex.Execute(strQuery)

while not RS.eof

%>
<%=RS("nombre")%><br>
<%
RS.MoveNext
wend
End If
%>
  #5 (permalink)  
Antiguo 28/07/2009, 08:16
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: fallo en subconsulta

Gracias Muzztein, pero acabo de copiar y pegar tu código y ahora me da este error:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado
/get2.asp, línea 15
  #6 (permalink)  
Antiguo 28/07/2009, 08:29
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: fallo en subconsulta

checa tu conexion a la BD
  #7 (permalink)  
Antiguo 28/07/2009, 09:29
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: fallo en subconsulta

la conexion esta bien (o eso creo), no será que hace falta el driver odbc? Gracias por la ayuda
  #8 (permalink)  
Antiguo 28/07/2009, 09:57
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: fallo en subconsulta

si es q te falta el driver, entonces tu conexion NO esta bien.
  #9 (permalink)  
Antiguo 28/07/2009, 10:04
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: fallo en subconsulta

Como mirar si me falta el driver? de donde me lo bajo? un buen manual de asp? estoy más perdido...

En este link (ht tp:// ww w. forosdelweb.com/f15/asp-con-postgresql-459065/) emplean la misma cadena de conexión :S

Gracias por la ayuda

Última edición por lmalvarez; 28/07/2009 a las 10:30
  #10 (permalink)  
Antiguo 28/07/2009, 10:23
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: fallo en subconsulta

checa esto

http://www.developer.com/open/article.php/631251

y esto

http://www.postgresql.org/ftp/odbc/versions/
  #11 (permalink)  
Antiguo 29/07/2009, 02:29
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: fallo en subconsulta

Gracias Muzztein!!, ya conseguí conectarme via ODBC con visual web developer, pero ahora me da el siguiente error:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
ERROR: error de sintaxis en o cerca de «b1fec5e6cf4861b»; Error while executing the query
/get2.asp, línea 45

"b1fec5e6cf4861b" pertenece a la variable tag

Acabo de probar una consulta más sencilla y sí que funciona. A ver si cambiando un poco el código lo arreglo

Lo que hice hasta ahora fue:
instalar driver de aquí ht tp://ww w.postgresql.org/ftp/odbc/versions/
Agregar el origen de datos(haga clic en Inicio y, a continuación, en Panel de control. Haga doble clic en Herramientas administrativas y, después, haga doble clic en Orígenes de datos (ODBC)).
Agregar en los 3 DSN (usuario, sistema, archivo) el postgreANSI
Conectarme desde visual web developer
pillar la cadena de conexión y ponerla en el código.
  #12 (permalink)  
Antiguo 29/07/2009, 06:12
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: fallo en subconsulta

Solucionado,

a parte de lo comentado en el anterior post tuve que cambiar la consulta por esta otra:

strQuery = "SELECT nombre FROM usuarios WHERE (idusuarios =(SELECT usuarios_idusuarios FROM tarjetas_RFID WHERE (tag_hash = '"&tag&"')))"

Muchas gracias a todos por vuestra ayuda
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 21:33.