Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con un where (https://www.clubdelphi.com/foros/showthread.php?t=30595)

ilichhernandez 11-04-2006 00:27:36

Problema con un where
 
Hola amigos del foro, una vez mas me acaece una duda, tengo la siguiente linea:

Código Delphi [-]
elwhere := 'where codigo_principal = ' + edit1.text ;

se me ocurrio algo asi 'where codigo_principal = ' + ''' + edit1.text + ''' ; pero no funciono.

Estoy tratando de insertar un par de comillas pero no lo logro, la idea es que el valor string que esta en el edit1.text quede entre comillas , por ejemplo
si el usuario ingresa el string europa, que internamente yo pueda guardarlo como 'europa' para asi poder usarlo en una sentencia SQL pues sin la comilla la cosa no me funciona.... agradeceria algun comentario....

Gracias.

Héctor Randolph 11-04-2006 00:36:39

Hola ilichhernandez

Prueba con la función QuotedStr() sirve para insertar las comillas que necesitas.


Código Delphi [-]
elwhere := 'where codigo_principal = ' + QuotedStr(edit1.text) ;

Espero que sea útil, saludos.

Sotrono 11-04-2006 00:37:27

hOLA.
Algo así??
Código Delphi [-]
Query := 'SELECT * FROM Tabla WHERE Campo = "' + Edit1.Text +'"';';

Sotrono 11-04-2006 00:45:57

Otra opcion
 
Tambien podes hacerlo con parametros:

Código Delphi [-]
Query := 'SELECT * FROM Tabla WHERE Campo = :Campo';
//Si usas TAdoQuery:
AdoQuery1.Parameters.ParamByName('Campo').Value := Edit1.Text;

//Si usas TQuery
Query1.ParamByName('Campo').Value := Edit1.Text;

ilichhernandez 11-04-2006 00:56:10

Muchas gracias por sus tiempos y ayuda , al fin lo he echo de la siguiente manera :

Código Delphi [-]
elwhere := 'where codigo_principal = ' + '''' + edit1.text + '''' ;

y me ha funcionado de las mil maravillas, bueno gracias por el tiempo que habeis tomado en mi consulta,se los agradesco (la idea de las 4 comillas la encontre en un hilo antiguo).

ilich hernandez.:):):):):):):D:D:D:D

Pd : Tambien he probado el QuotedStr y me ha funcionada a la perfeccion....

ContraVeneno 11-04-2006 18:01:31

solo un pequeñísimo detalle: no hay necesitdad de tantos apóstrofes o signos + ;)

Código Delphi [-]
elwhere := 'where codigo_principal = '''+ edit1.text + '''' ;

QuotedStr funciona igual pero se vería mejor.

roman 11-04-2006 18:09:53

En mi opinión, ni apóstrofes ni QuotedStr. El sólo hecho de ver un Edit1.Text mezclado con el texto de la consulta SQL es síntoma de que hay uan fuerte dependencia entre el acceso a datos y la interfaz visual, y a la larga esto hace un código increiblemente difícil de mantener. La respuesta de Sotrono, usando ParamByName hace el código mucho más prolijo.

// Saludos

jubers85 13-04-2006 21:12:44

Saludos
 
Bueno existen muchas formas de ingresar las consultas sql con comillas en la cosulta, empezando desde un
QuotedStr
ParamByName
comillas aglomerdas, como tabien la forma de poner entre la comilla en codigo ASCII
como #39 o char(39) ejemplo
query1.sql.add('exex sp XXXX '+#39+Parametro+#39)
query1.sql.add('exex sp XXXX '+char(39)+Parametro+char(39))


entonces tambien exite esta forma pero cada cual tiene su ventaja y desventaja, yo realice unos diagnosticos, de cada una, pero la encontre menor cantidad de incoherencias y mejor uso fue la QuotedStr(), pues
mientras que en parambyName encontre algunos molestos casos en las cuales te causan problemas cuando realices cambios de bd y tablas diferentes este parametro es algo molesta de cambiar cuando relices cambios en forma dinamica, es decir cuando cambias en nombre de un campo, pues cuando se trata del desarrollo de un software grande pues es molestoso cambiarlo, el uso de comillas bueno la molestia mas que todo es en cosultas grandes causa mucha confusion o menos didactica hacerlo, al igual que #39... yo recomiendo que la usen el QuotedStr

saludos

Juber


La franja horaria es GMT +2. Ahora son las 19:23:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi