Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error con " en sentencia sql (https://www.clubdelphi.com/foros/showthread.php?t=51621)

Besto 21-12-2007 08:53:08

Error con " en sentencia sql
 
Hola,

tengo un problema , quiero hacer un select muy sencillo tal que así

' select * from tabla where campo = " + valor + '"';

el problema me surge cuando valor tiene doble comilla (") me da un error.

¿Hay alguna función que pueda usar para que Delphi distinga entre la comilla del valor y la comilla de finalización de la sentencia ?

Uso Delphi 2 y bases de access.

Gracias.

jachguate 21-12-2007 09:33:12

Cita:

Empezado por Besto (Mensaje 253857)
Hola,

tengo un problema , quiero hacer un select muy sencillo tal que así

' select * from tabla where campo = " + valor + '"';

el problema me surge cuando valor tiene doble comilla (") me da un error.

¿Hay alguna función que pueda usar para que Delphi distinga entre la comilla del valor y la comilla de finalización de la sentencia ?

Uso Delphi 2 y bases de access.

Gracias.

Quien tiene que distinguir entre la comilla de terminación y la inserta no es Delphi, sino Access. Desconozco si hay algún caracter de escape o cual es el método utilizado para lograr esto allí.

En las bases de datos que cumplen de manera básica con el estándar SQL, las cadenas se envían en comillas simples y se reconocen las comillas intermedias al estilo tradicional de pascal.

Es decir, si querés una cadena cuyo contenido sea Art's, se escribiría 'Art''s', etc. (supongo que conoces ese método).

Delphi tiene una rutina que realiza la conversión, si te vale para Access, tu código quedaría así:

Código Delphi [-]
' select * from tabla where campo = ' + QuotedStr(valor);

Francamente no logro recordar si dicha función ya estaba disponible en Delphi 2.

reina 05-01-2008 18:20:22

Hola! me parece que en delphi 2 no esta esa función. Lo que podes hacer es poner el asccii, creo que es para comillas dobles chr(39) y para comillas simples chr(34) proba puedo estar equivocada.

seria algo asi:
cadena1 + chr(34) + cadena2 + chr(34)

salu22222

egostar 05-01-2008 18:27:01

Y no seria mejor usar parametros?

Código SQL [-]
 
SELECT * FROM TABLA WHERE CAMPO = :Parametro

Código Delphi [-]
 
Query1.ParambyName('Parametro').Value := 'valor';

Salud OS

jachguate 05-01-2008 19:57:26

Cita:

Empezado por egostar (Mensaje 256255)
Y no seria mejor usar parametros?

Personalmente creo que en la mayoría de los casos (si no en todos) es mejor usar parámetros. Sobre todo si se usan motores con cache de sentencias, como oracle.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 22:54:00.

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