Missing right quote
Hola a todos.
Mi pregunta es: ¿Cómo evitar el error "Missing right quote" en una sentencia SQL en firebird?. Un saludo. Gracias |
No conozco FireBird, pero el error creo que es claro, falta una comilla a la izquierda. Posiblemente has avierto un string y nunca lo has cerrado, por ejemplo
INSERT INTO TABLA (CAMPO) VALUES('Texto') |
gracias delphi.com.ar
el problema es que estaba haciendo una consulta tal que: TQuery1(Sender1).SQL[0]='SELECT * FROM PROVEEDORES WHERE NOMBRE =' + TQuery2(Sender2).FieldByName('NOMBRE').AsString; donde TQuery2(Sender2).FieldByName('NOMBRE').AsString puede contener nombres como SEAN O'DONELL Gracias de nuevo. |
Bueno, puedes utilizar la función QuotedStr para prevenir este tipo de errores.
Saludos! |
Cita:
Para evitar ese problema... es mejor hacer uso de la función QuotedStr... TQuery1(Sender1).SQL[0]='SELECT * FROM PROVEEDORES WHERE NOMBRE =' + QuotedStr(TQuery2(Sender2).FieldByName('NOMBRE').AsString); o claro... el uso de parámetros... Código:
TQuery1(Sender1).SQL[0] := ;) |
Hola Juan....Delphi....Luisny....
Mi pregunta es la siguiente: podria alguno de ustedes explicarme el codigo descrito mas arriba? por que utilizan las clase sender para manejar la cadena SQL y al mismo tiempo para pasarle los parametros al query?...me gustaria saber si esta forma es mucho mas conveniente que la convencional ( o mejor dicho la que yo conocia hasta ahora); Gracias.... |
Me parece que ese código no es muy real, me llaman la atención las clases TQuery1 y TQuery2... y las variables Sender1 y Sender2, pero:
Si tienes un evento que dispara un DataSet, o llamas a un evento, con el parámetro asignado a un dataset, puedes usar este parámetro para hacer referencia al DataSet. Obviamente que si se trata de un Form, con un solo dataset, o sabes que ese evento solo actualizará un dataset, es mucho mas rápido acceder a este por la variable que lo contiene, que hacer estos malabares. Otra cosa que no me agrada mucho, es que solo asigne la primer línea del Sql (SQL[0]), ya que si en alguna momento asigna mas de una línea o una línea tiene un CR+LF, esto producirá errores impredecibles. Código:
procedure TMiForm.MiEvento(Sender: TObject); |
La franja horaria es GMT +2. Ahora son las 02:04:15. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi