Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2007
Avatar de edelphi
edelphi edelphi is offline
Miembro
 
Registrado: jun 2006
Posts: 55
Poder: 21
edelphi Va por buen camino
Thumbs up Ayuda

Compañeros regrese a preguntar por que ahora el problemita esta un poquito mas dificil

se trata de que el campo con el cual quiero hacer la consulta se pase desde una variable algo asi
Código Delphi [-]
filtro:='Select * from agenda where '''+lowercase(campo)+''' like '''+TXTbusca.text+'%'+'''';

donde campo es el campo que esta convirtiendose a minusculas y TXTbusca es el valor cone el cual se compara para hacer la consulta

esta consulta no me corre no se por que de seguro la posicion de los apostrofes esta mal por favor diganme como es la posicion correcta
Responder Con Cita
  #2  
Antiguo 06-02-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
El problema es que el nombre de los campos no debe ir entre comillado...

Código Delphi [-]
filtro := 'Select * from agenda where ' + lowercase(campo) + ' like ''' + TXTbusca.text + '%''';

Ahora también podrías usar:

Código Delphi [-]
Filtro := Format('select * from agenda where %s like ''%s%%''', [lowercase(campo), TXTBusca.Text]);


Saludos...
Responder Con Cita
  #3  
Antiguo 07-02-2007
Avatar de edelphi
edelphi edelphi is offline
Miembro
 
Registrado: jun 2006
Posts: 55
Poder: 21
edelphi Va por buen camino
amigo maeyanes probe los dos codigos que me mandaste pero ninguno me funciono me manda un mensaje de error diciendo error en sintaxis, por si acaso pueda servir estoy trabajando con mysql 5 y delphi 7 la conexion ado y bueno el problema mas que todo es al momento de mandar el campo por que si lo escribo de frente si me funciona de maravillas.

Espero les sirva el comentario para que me ayuden con mi problema gracias
Responder Con Cita
  #4  
Antiguo 07-02-2007
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 22
pborges36 Va por buen camino
asi es como deberia funcionar:

Código Delphi [-]
filtro := 'Select * from agenda where ' + lowercase(campo) + ' like '" + TXTbusca.text + '%"';
 
ADOQ.SQL.Text:=filtro;
Responder Con Cita
  #5  
Antiguo 07-02-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
no creo que funcione, por la forma en que estan las comillas.
__________________

Responder Con Cita
  #6  
Antiguo 07-02-2007
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 22
Ivanzinho Va por buen camino
Código Delphi [-]
filtro := 'Select * from agenda where ' + lowercase(campo) + ' like ' + QuotedStr(TXTbusca.text + '%');
ADOQ.SQL.Text:=filtro;
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #7  
Antiguo 09-02-2007
Avatar de pborges36
pborges36 pborges36 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Argentina
Posts: 192
Poder: 22
pborges36 Va por buen camino
Cita:
Empezado por pborges36
asi es como deberia funcionar:


Código Delphi [-]
filtro := 'Select * from agenda where ' + lowercase(campo) + ' like '" + TXTbusca.text + '%"';

ADOQ.SQL.Text:=filtro;


Es verdad, eso es lo que queria escribir:

Código Delphi [-]
filtro := 'Select * from agenda where ' + lowercase(campo) + ' like "' + TXTbusca.text + '%"';
 
ADOQ.SQL.Text:=filtro;
Responder Con Cita
  #8  
Antiguo 09-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Pues creo que se ha colado un error por ahí. Imaginemos que el campo en la base de datos se llama NOMBRE (escrito en mayúsculas).

Lowercase es una función de delphi, por tanto, la sql final sería:
Código SQL [-]
Select * from agenda where nombre  like 'pepe%'
Lo que ha hecho lowercase es pasar a minúsculas el nombre del campo, pero eso es lo de menos, SQL no es sensible a mayúsculas y minúsculas, así que... ni siquiera tiene sentido hacer el "Lowercase(campo)".

Si un cliente se llama PEPE (en mayúsculas) no será capaz de encontrarlo.

Lo que debemos usar es "Lower", función propia de SQL
La consulta debe ser:
Código Delphi [-]
query1.sql.text:= 'Select * from agenda where Lower(' + campo+ ')  like ' +QuotedStr(TXTbusca.text + '%');

El SQL de un ejemplo quedará:
Código SQL [-]
Select * from agenda where lower(nombre)  like 'pepe%'

Para que ahora si, por cada registro que encuentra, primero pasa a minúsculas el nombre del cliente y después lo compara con "like pepe% " dando las coincidencias que buscamos.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 09-02-2007 a las 16:28:33.
Responder Con Cita
  #9  
Antiguo 07-05-2007
Avatar de edelphi
edelphi edelphi is offline
Miembro
 
Registrado: jun 2006
Posts: 55
Poder: 21
edelphi Va por buen camino
holas una consulta lo que deseo es hacer un query algo as masomenos
Código Delphi [-]
  MD.ADOfut.SQL.Text:='Select * from Futs where Fecha like'''+DateToStr(DateTimePicker1.date)+'and IDfut'''+Edit1.text+'''';
se trata de una consulta doble en la cual selecciono los campos escogidos en una fech y por un IDfut escrito en el edit1

espero me puedan ayudar
Responder Con Cita
  #10  
Antiguo 07-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
Código Delphi [-]
With MD.ADOfut do begin
 if active then close;
 SQL.Clear;
 SQL.Add('Select *');
 SQl.Add('From Futs');
 SQL.Add('where fecha = :Fecha');
 SQL.Add('and IDFut= :IDFut');
 Parameters.ParamByname('Fecha').AsDateTime:=DateTimePicker1.DateTime;
 Parameters.ParamByName('IDFut').AsString:=Edit1.Text;
 Open;
 .....
 ....
end; //with
__________________

Responder Con Cita
  #11  
Antiguo 09-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cita:
Empezado por edelphi
esta consulta no me corre no se por que de seguro la posicion de los apostrofes esta mal por favor diganme como es la posicion correcta
¿Veís? ¿veís? por eso es mejor usar QuotedStr

No he podido resistirme

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con consulta not in (select ....) VRO Firebird e Interbase 12 03-10-2005 18:54:05
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06
Consulta con Sub-select !!! isc_hilda SQL 2 21-05-2004 05:22:05
Select (Consulta) WaRRanT MySQL 3 19-02-2004 15:13:58


La franja horaria es GMT +2. Ahora son las 09:10:01.


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