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

Siempre Syntax error (missing operator) in query expression 'ID='

Estas en el tema de Siempre Syntax error (missing operator) in query expression 'ID=' en el foro de ASP Clásico en Foros del Web. Siempre error Syntax error (missing operator) in query expression 'ID=' en edit.asp, line 26 (LÍNEA 26 QUE DA ERROR) RS.Open sql, Conn Paso código. Envío ...
  #1 (permalink)  
Antiguo 23/11/2005, 15:33
wpp
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
Desacuerdo Siempre Syntax error (missing operator) in query expression 'ID='

Siempre error Syntax error (missing operator) in query expression 'ID=' en edit.asp, line 26

(LÍNEA 26 QUE DA ERROR) RS.Open sql, Conn

Paso código.
Envío los dos valores ID y fname por form.

Código:
<%

Dim ID, fname, Conn, RS

	ID = Request.Form("ID")
	fname = Request.Form("fname")


'Instanciamos y abrimos nuestro objeto conexion 
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("/mdb-database/FileDB.mdb")
sql = "SELECT * FROM files WHERE ID= " & ID & ""

Set RS = Server.CreateObject ("ADODB.RecordSet")
(LÍNEA 26 QUE DA ERROR) RS.Open sql, Conn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el dni.
If (RS.EOF = false) then

'Ahora creamos la sentencia SQL 
	  SQL="Update files Set fname= " & fname & " where ID= " & ID
	  Conn.execute (sql) 

Response.Write "<meta http-equiv=refresh content='2;URL=../tries/show.asp'>"
Response.Write "<div align=center><font type=verdana><b>Referencia <b><font color=red>" & ID & "</b></font> ha sido editada correctamente.</b></div>"
Response.Write "<br><br><div align=center><a href=javascript:history.go(-1); title='VOLVER ATRÁS'><b><font face='Flat Brush' color=#008080 style=font-size:10pt><u>Atrás</u></font></b></em></a></span></div>"

Else
Response.Write "<meta http-equiv=refresh content='2;URL=../tries/show.asp'>"
Response.Write "<div align=center><font type=verdana><b>No ha sido editado correctamente.</b></div>"
Response.Write "<div align=center><font type=verdana><b>El ID <b><font color=red>" & ID & "</b></font> no es correcto, o no ha sido registrado previamente.</b></div>"
Response.Write "<br><br><div align=center><a href=javascript:history.go(-1); title='VOLVER ATRÁS'><b><font face='Flat Brush' color=#008080 style=font-size:10pt><u>Atrás</u></font></b></em></a></span></div>"
End If

'Cerramos el sistema de conexion
Conn.Close
%>
No sé como evitar ese dichoso mensaje de error en query expressión ID.
  #2 (permalink)  
Antiguo 23/11/2005, 15:44
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
1. Debuguea:

sql = "SELECT * FROM files WHERE ID= " & ID & ""
Response.write(sql)
response.end

Ve cual es la salida, que el ID llegue correctamente.

2. Si todo llega correctamente, entonces puede ser un problema con el tipo de dato que ocupas.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 23/11/2005, 15:55
wpp
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
REsponde esto:

SELECT * FROM files WHERE ID=

O sea no llega valor, no entiendo nada.

Code que envia los valores.

<html>
<head>
<title>Editar datos en una Bd</title>
<style>
body, input { font-family:verdana,arial; font-size:10pt; }
</style>
</head>
<body>
<p align="center">
<br>
<a href="show.asp">Para ver datos insertados pulse aquí</a>
</p>

<table border="0" align="center" height="89">
<tr>
<form method="POST" enctype="multipart/form-data" action="edit.asp">
<td height="22"><span style="font-size: 8pt">Localidad :</span></td>
<td height="22">
<input type="text" name="fname" size="23"></td>
</tr>
<td height="22"><span style="font-size: 8pt">Vivienda :</span></td>
<td height="22">
<input type="text" name="ID" size="23"> </td></tr>

<td height="1"> </td><td height="1">
<span style="font-size: 8pt">
<input type="submit" value="Submit"></span></td>
</tr>
</form>
</tr>
</table>

</body>
</html>
  #4 (permalink)  
Antiguo 23/11/2005, 16:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Trata cambiando el form asi:

<form method="POST" action="edit.asp">
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 23/11/2005, 16:32
wpp
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
Okey, me dí cuenta cuando lo envié.

Pero ahora me da error en otros parámetros, mira por fa que hago mal con las comas y esos rollos, todo es texto menos profesion e ID.

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.

/triys/edit.asp, line 34



Code:
sql = "Update files Set "
sql = sql & " fname= " & fname & ","
sql = sql & " lname= " & lname & ","
sql = sql & " profesion= " & profesion
sql = sql & " Where ID=" & ID
Conn.execute (sql)
  #6 (permalink)  
Antiguo 23/11/2005, 16:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Si el campo a actualizar es de texto necesitas concatenarlo con apostrofes:

sql = sql & " fname= '" & fname & "',"

Y asi para cada campo de texto, por ahi debe andar el problema, tambien asegurate que esten llegando los valores correctos como se hizo anteriormente.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 23/11/2005, 16:46
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
proba poniendo comillas simple y dobnles
yo tube un lio similar
y verifica el lname que no vi que lo hales en el codigo que pegastes


sql = "Update files Set fname= '" & fname & "' , lname= '"& lname &"' profesion= '" & profesion &"'"
sql = sql & " Where ID=" & ID
Conn.execute (sql)
__________________
JuanRa Pérez
San Salvador, El Salvador
  #8 (permalink)  
Antiguo 23/11/2005, 17:07
wpp
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
Bueno esto es la leche.

Ahora me dice
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.

/triys/edit.asp, line 31

Y os puedo asegurar que llegan los cuatro valores actuales con el form.

CODE:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("/mdb-database/FileDB.mdb")
sql = "SELECT ID FROM files WHERE ID= " & ID & ""

Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open sql, Conn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el dni.
If (RS.EOF = false) then

'Ahora creamos la sentencia SQL

sql = "Update files Set fname= '" & fname & "', lname= '"& lname &"', profesion= '" & profesion &"'"
sql = sql & " Where ID=" & ID
Conn.execute (sql)

Gracias por que soy un rato pesao.
  #9 (permalink)  
Antiguo 23/11/2005, 17:25
wpp
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
Sonrisa

Paso todo el código por si vosotros detectáis el error para que responda Syntax Error en UPDATE Statment.

Código:
<%
	ID = Request.Form("ID")
	fname = Request.Form("fname")
	lname = Request.Form("lname")
	profesion = Request.Form("profesion")

'Instanciamos y abrimos nuestro objeto conexion 
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("/mdb-database/FileDB.mdb")
sql = "SELECT ID FROM files WHERE ID= " & ID & ""

Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open sql, Conn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el dni.
If (RS.EOF = false) then

'Ahora creamos la sentencia SQL 

sql = "Update files Set fname= '" & fname & "', lname= '"& lname &"', profesion= '" & profesion &"',"
sql = sql & " Where ID=" & ID
Conn.execute (sql)

Response.Write "<meta http-equiv=refresh content='2;URL=../tries/show.asp'>"
Response.Write "<div align=center><font type=verdana><b>Referencia <b><font color=red>" & ID & "</b></font> ha sido editada correctamente.</b></div>"
Response.Write "<br><br><div align=center><a href=javascript:history.go(-1); title='VOLVER ATRÁS'><b><font face='Flat Brush' color=#008080 style=font-size:10pt><u>Atrás</u></font></b></em></a></span></div>"

Else
Response.Write "<meta http-equiv=refresh content='2;URL=../tries/show.asp'>"
Response.Write "<div align=center><font type=verdana><b>No ha sido editado correctamente.</b></div>"
Response.Write "<div align=center><font type=verdana><b>El ID <b><font color=red>" & ID & "</b></font> no es correcto, o no ha sido registrado previamente.</b></div>"
Response.Write "<br><br><div align=center><a href=javascript:history.go(-1); title='VOLVER ATRÁS'><b><font face='Flat Brush' color=#008080 style=font-size:10pt><u>Atrás</u></font></b></em></a></span></div>"
End If

'Cerramos el sistema de conexion
Conn.Close
%>
También quiero dejaros claro que los cuatro valores llegan perfectamente con el form, lo he comprobado en varias ocasiones, es decir, por coj..., el error está en este proceso, y estoy cegato.

Gracias.

PD. Por cierto jugando con quitar o poner comillas o comas, sólo gano que me pone:
-Too few parameters. Expected 3-
Pero sigue sin funcionar.
  #10 (permalink)  
Antiguo 23/11/2005, 18:06
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
proba asi
me equivoque cerre antes

sql = "Update files Set fname= '" & fname & "' , lname= '"& lname &"' profesion= '" & profesion &"' Where ID='" & ID &"'"
Conn.execute (sql)
__________________
JuanRa Pérez
San Salvador, El Salvador
  #11 (permalink)  
Antiguo 23/11/2005, 18:06
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
falto la coma de profesion

, profesion =

jejejejej
__________________
JuanRa Pérez
San Salvador, El Salvador
  #12 (permalink)  
Antiguo 23/11/2005, 18:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
No, asi como que poner todo el código para que te hagamos el trabajo, va a estar un poco difícil, volvemos al principio:

1. Debuguea, ya te mostramos como
2. Agrega comillas simples a los campos de texto
3. Verifica que tus campos se llamen de la misma manera como los estás llamando en tu sentencia.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #13 (permalink)  
Antiguo 24/11/2005, 01:20
wpp
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
Ok.

1.- Hice debug y los cuatro valores se envían y recogen perfectamente en edit.asp
2.- Puse comillas simples en los form de texto.
3.- Todos los campos se llaman igual, fname, lname, profesion, ID.

Y con el último cambio que me dijísteis ahora me responde:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.

/triys/edit.asp, line 30
  #14 (permalink)  
Antiguo 24/11/2005, 14:33
wpp
 
Fecha de Ingreso: noviembre-2003
Mensajes: 50
Antigüedad: 21 años, 5 meses
Puntos: 0
Lo conseguí solucionar, gracias a todos.
Era problema de un nombre de la colección en la BD access.
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 15:23.