FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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')
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
Bueno, puedes utilizar la función QuotedStr para prevenir este tipo de errores.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
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] := 'SELECT * FROM PROVEEDORES WHERE NOMBRE = :Nombre'; (Sender1 as TQuery).ParamByName('Nombre').AsString := (Sender2 as TQuery).FieldByName('NOMBRE').AsString; Última edición por jachguate fecha: 17-03-2004 a las 15:18:43. Razón: completar la idea con parámetros |
#6
|
|||
|
|||
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....
__________________
El conocimiento es un Patrimonio Universal.... |
#7
|
||||
|
||||
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); begin if Sender is TQuery Then with Sender as TQuery do begin Sql.Text := 'SELECT....'; Open; .... end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|