Ver Mensaje Individual
  #14  
Antiguo 12-06-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Reputación: 24
__marcsc Va por buen camino
Vamos a ver, ataquemos el problema des del principio...

Te estás confundiendo porqué Delphi y SQL utilizan el mismo operador para denotar un string.

Imaginate que tu quieres escribir un SQL de este estilo

Código SQL [-]
SELECT *
FROM equipos 
WHERE nombre = 'Pepito'

Ok, hasta aquí no problem. El problema viene cuando tu, utilizando código fuente Delphi, quieres generar esta sentencia.

Lo que tu, por lo que veo, intentarías es

Código Delphi [-]
Query1.SQL.Add('SELECT * FROM equipos WHERE Nombre = 'Pepito');

Este código no compila. Porqué?

Vale, hagamos una suposición. Imaginate que las cadenas en Delphi se denotan con " y no con ' . Verdad que sería lógico escribir:

Código Delphi [-]
Query1.SQL.Add("SELECT * FROM equipos WHERE Nombre = 'Pepito' ");

Pues aquí está el problema: que confundes lo que son los carácteres de string que forman parte de la sentencia SQL y los que forman parte de Delphi porqué se denotan igual.

En el código que no compila, no lo hace por lo siguiente, el compilador detecta un string, y un identificador no válido:

'SELECT * FROM equipos WHERE Nombre = '//este es el string que interpreta
Pepito' //esto se queda colgado y hace que no compile

lo que hay que hacer en delphi para poder utilizar el carácter ' dentro de un string en código es ponerlo dos veces. Por esto el código correcto en Delphi es:

Código Delphi [-]
Query1.SQL.Add('SELECT * FROM equipos WHERE Nombre = ''Pepito''');

Para lo que sirve la función QuotedStr es para no tener que escribir todas estas comillas, lo que hace es agregarte el carácter ' al principio y final del string. (esto ya te lo contaba en un mensaje anterior, y lo puedes mirar en el help de Delphi)

Por esto, el código más leible es

Código Delphi [-]
Query1.SQL.Add('SELECT * FROM equipos WHERE Nombre = ' + QuotedStr('Pepito'));

Espero que te sirva el rollo.

Saludos!

EDIT: Coño, vaya despiste con la propiedad Text... Sin comentarios...

Última edición por __marcsc fecha: 12-06-2004 a las 12:12:23.
Responder Con Cita