Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Question 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.
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #2  
Antiguo 11-04-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 11-04-2006
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 21
Sotrono Va por buen camino
hOLA.
Algo así??
Código Delphi [-]
Query := 'SELECT * FROM Tabla WHERE Campo = "' + Edit1.Text +'"';';
Responder Con Cita
  #4  
Antiguo 11-04-2006
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 21
Sotrono Va por buen camino
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;
Responder Con Cita
  #5  
Antiguo 11-04-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Smile

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.

Pd : Tambien he probado el QuotedStr y me ha funcionada a la perfeccion....
__________________
[Lo que a veces es tan facil, a veces parece imposible]

Última edición por ilichhernandez fecha: 11-04-2006 a las 02:02:45.
Responder Con Cita
  #6  
Antiguo 11-04-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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.
__________________

Responder Con Cita
  #7  
Antiguo 11-04-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #8  
Antiguo 13-04-2006
jubers85 jubers85 is offline
Registrado
 
Registrado: nov 2005
Posts: 4
Poder: 0
jubers85 Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:55:34.


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
Copyright 1996-2007 Club Delphi