![]() |
Error de sintaxis en Sentencia SQL Saludos al foro: Lo que la pagina "ofertas.asp" tiene que hacer es lo siguiente: Recoge el valor del campo claseoferta de un recordset y lo muestra dentro de un formulario, de forma que al pulsar sobre el botón "Ir a" vaya a la pagina "generartabla.asp". La página generartabla.asp debe lanzar un listado filtrado por el valor del campo claseoferta; pero me produce un error que es el siguiente: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta 'claseoferta ='. /generartabla.asp, line 53 Les paso el código de las dos páginas por si ven el error, porque yo no soy capaz de verlo. ------------------------------------------ Codigo de la página ofertas.asp: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <html> <head> <title>Escoja su clase de oferta</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_jumpMenuGo(selName,targ,restore){ //v3.0 var selObj = MM_findObj(selName); if (selObj) MM_jumpMenu(targ,selObj,restore); } //--> </script> </head> <body> <!--Incluimos el fichero de constantes--> <!--#INCLUDE file="ADOVBS.inc"--> <% 'Para conexión a dsn arsys con ACCESS 'Set Ob_Conn= Server.CreateObject("ADODB.Connection") 'Set Ob_Command= Server.CreateObject("ADODB.Command") 'Ob_Conn.open "DSN=clubviajesoferta.com.access" 'Ob_Command.ActiveConnection=Ob_Conn 'Ob_Command.CommandType=adCmdText 'Ob_Command.CommandText= "SELECT * FROM ofertas WHERE id = " & Request.QueryString("id")" 'Set Ob_RS=Ob_Command.Execute () 'Termina aquí la conexion a dsn arsys con ACCESS 'Para conexion a ODBC local Set Ob_Conn = Server.CreateObject("ADODB.Connection") Set Ob_Command= Server.CreateObject("ADODB.Command") Ob_Conn.open "cvo_odbc" ' Abrimos la tabla, declaramos que conexión esta abierta, tipo de cursor, tipo de cerrojo, y opciones Ob_Command.ActiveConnection=Ob_Conn Ob_Command.CommandType=adCmdText Ob_Command.CommandText= "SELECT DISTINCT claseoferta FROM ofertas" Set Ob_RS=Ob_Command.Execute () %> Estos son las clases de ofertas que tiene a su disposición: Haga click sobre el botón "Ir A" correspondiente para ver el contenido de dichas ofertas <% do until Ob_RS.eof %> <form method="post" action="generartabla.asp?claseoferta=<%=Ob_RS("cla seoferta")%>"> <%=Ob_RS("claseoferta")%> <input type="hidden" name="campodebusqueda" value="<%=Ob_RS("claseoferta")%>"> <input type="submit" value="Ir A"> </form> <%Ob_RS.movenext%> <% loop %> <%Ob_RS.close Ob_Conn.close%> </body> </html> ------------------------------------------ Codigo de la página "generartabla.asp" <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <%response.Expires=0%> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </script> <SCRIPT LANGUAGE="JavaScript"> <!-- function AbrirVentana (theURL, winName, features) { window.open (theURL, winName, features); } --> </SCRIPT> </head> <body background="images/frame_izqda_con_opacidad.jpg" leftmargin="0" topmargin="25" marginwidth="0" marginheight="0"> <!--Incluimos el fichero de constantes--> <p> <!--#INCLUDE file="ADOVBS.inc"--> <% 'Para conexión a dsn arsys con ACCESS 'Set Ob_Conn= Server.CreateObject("ADODB.Connection") 'Set Ob_Command= Server.CreateObject("ADODB.Command") 'Ob_Conn.open "DSN=clubviajesoferta.com.access" 'Ob_Command.ActiveConnection=Ob_Conn 'Ob_Command.CommandType=adCmdText 'Ob_Command.CommandText= "SELECT * FROM ofertas" 'Set Ob_RS=Ob_Command.Execute () 'Termina aquí la conexion a dsn arsys con ACCESS 'Para conexion a ODBC local Set Ob_Conn = Server.CreateObject("ADODB.Connection") Set Ob_Command= Server.CreateObject("ADODB.Command") Ob_Conn.open "cvo_odbc" ' Abrimos la tabla, declaramos que conexión esta abierta, tipo de cursor, tipo de cerrojo, y opciones Ob_Command.ActiveConnection=Ob_Conn Ob_Command.CommandType=adCmdText Ob_Command.CommandText= "SELECT * FROM ofertas WHERE claseoferta = " & Request.form("claseoferta") Set Ob_RS=Ob_Command.Execute () %> <table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr bgcolor="#e0e0e0"> <td width="8%"> <div align="left"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Destino</font></div></td> <td width="5%"> <div align="left"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Zona</font></div></td> <td width="23%"> <div align="left"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Salidas</font></div></td> <td width="17%"> <div align="left"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Fecha de Salida</font></div></td> <td width="19%"> <div align="left"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Hotel</font></div></td> <td width="3%"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Categoría</font></td> <td width="4%"><div align="left"><font size="2"><font size="1"><font size="1"><font face="Arial, Helvetica, sans-serif"></font></font></font></font></div></td> <td width="12%"> <div align="left"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Precio</font></div></td> <td width="13%"> <div align="left"><font color="#003399" size="1" face="Arial, Helvetica, sans-serif">Regimen</font></div></td> </tr> <% do until ob_RS.eof %> <tr align="left" valign="top" bgcolor="#ebf3eb"> <td> <div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("destino")%></font></div></td> <td> <div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("Zona")%></font></div></td> <td> <div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("salidas")%></font></div></td> <td> <div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("fechasalida")%></font></div></td> <td> <div align="left"> <p><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("hotelnombre")%> </font></div></td> <td><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("hotelcategoria")%></font></td> <td><font size="1" face="Arial, Helvetica, sans-serif"><a href="generartabla.asp" onClick="AbrirVentana('ficha_hotel.asp?id=<%=Ob_RS ("id")%>', '', 'top=112, left=165, width=627, height=350, resizable=0')" shape="rect" > <img src="images/iconohotel.gif" alt="Información sobre el hotel" width="22" height="22"></a> </font> <td> <div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("hotelprecio")%> €</font></div></td> <td width="16%"> <div align="left"><font size="1" face="Arial, Helvetica, sans-serif"><%=Ob_RS("hotelregimen")%></font></div></td> </tr> <% Ob_RS.movenext loop Ob_RS.close Ob_Conn.close %> </table> </body> </html> Gracias por todo a todo el foro |
Cita:
Hazle un response.write al request.Form("claseoferta"), lo mas seguro es que no esté llegando... Cita:
Salu2, |
podrias poner mas resumido tu codigo? solo la parte que te saca el error. |
En este momento la base de datos tiene 3 registros: Canarias Islas Prueba Creo que está pasando el parámetro porque en la barra de direcciones me aparece lo siguiente: Cada vez que pulso el botón "ir a" me aparece para el primer registro: http://localhost/generartabla.asp?claseoferta=Canarias para el segundo registro: http://localhost/generartabla.asp?claseoferta=Islas Y para el 3 registro: http://localhost/generartabla.asp?claseoferta=Prueba |
Vuelvo y digo...je je je :-D Ob_Command.CommandText= "SELECT * FROM ofertas WHERE claseoferta = " & Request.form ("claseoferta") Estás haciendo el request a una forma, pero lo envías por querystring... Ob_Command.CommandText= "SELECT * FROM ofertas WHERE claseoferta = " & Request.querystring ("claseoferta") O lo envías en un input de tipo hidden y haces el request con el .form o lo dejas como está y ocupas el .querystring... Creo que por ahí va la cosa Salu2, |
He optado por poner la instruccion que tu me comentabas en el fichero generartabla.asp y dejar el resto como está: Ob_Command.CommandText= "SELECT * FROM ofertas WHERE claseoferta = " & Request.querystring ("claseoferta") y me da el siguiente error: Microsoft][Controlador ODBC Microsoft Access] Pocos parámetros. Se esperaba 1. Y ahora si que estoy perdido.... del todo. Gracias |
:censura: Ye vi el error, hagamos algo, no le pongas ni .form, ni .querystring, dejalo request("claseoferta"), ahora, no será que el tipo de dato de tu campo es texto? si es así la SQL debe quedar: Ob_Command.CommandText= "SELECT * FROM ofertas WHERE claseoferta = '" & Request("claseoferta") & "'" |
Ya me funciona... aunque todavia no entiendo cual era el error... ahora me toca estudiarlo. Muchisimas gracias..... me has salvado la vida ... porque a tal momento ya estaba completamente loco. Muchas gracias de nuevo |
:-D puuuffff, je je, el error estaba en que estabas buscando un dato mal en un campo de tipo texto, los textos te los pide SQL entre apostrofes 'Este es un texto'. SELECT...WHERE campo= '" & variable & "'" Salu2, |
Me siento realmente abrumado... (con tu paciencia, colaboración, etc.) y no es peloteo. Siento dar tanto la lata. Pero cuando ya no me salen las cosas es el ultimo recurso. Si todo el mundo se te pareciese un poco, creo que nos iria mejor de lo que nos va. Y que no se me queje el resto del foro porque os juro que nunca he visto este nivel de colaboracion y solidaridad. Gracias a todos. |
La zona horaria es GMT -6. Ahora son las 04:35. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.