Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2012
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking Buscada Multiple, Buscar dato en varios campos

hola a todos, necesito hacer una busqueda multiple como por ejemplo por CODIGO, CATEGORIA Y DESCRIPCION, que me filtre los tres campos a vez ejtodos los CODIGOS=que contengan 1, CATEGORIA=cigarrillos y DESCRIPCION=marlboro), uso el LIKE y funciona independiente en los 3 pero no como el ejemplo. agradezco su comentario, gracias....
Responder Con Cita
  #2  
Antiguo 12-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola, si lo que quieres es hacer una consulta que te filtre por las condiciones que comentas debería ser algo así:
Código SQL [-]
SELECT * FROM productos WHERE codigo=1 AND categoria='cigarrillos' AND descripción='Marlboro'
o, usando like, así:

Código SQL [-]
SELECT * FROM productos WHERE codigo=1 AND categoria LIKE '%cigarrillos%' AND descripción LIKE '%Marlboro%'

Según que motor de base de datos utilices los comodines del LIKE serán '%' o '*'.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 12-03-2012
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

CODIGO, CATEGORIA Y DESCRIPCION los tengo en edit separados para la busqueda, funcionara igual la opcion que me diste? xq como entiendo el LIKE se configura en cada edit, me explico?
Responder Con Cita
  #4  
Antiguo 12-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

si los tienes en edits separados y quieres utilizar los valores de los edits para montar una consulta en un Adoquery por ejemplo sería algo así:

Código Delphi [-]
adoquery1.close;
adoquery1.SQL.Text:='SELECT * FROM productos WHERE codigo='+edit1.text+' AND categoria LIKE '+quotedstr('%'+edit2.text+'%')+' AND descripcion LIKE '+quotedstr('%'+edit3.text+'%');
adoquery1.open;

No se si así te lo ves claro, también puedes hacerlo pasando como parametros los edit, tema que se ha tratado bastante en los foros.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #5  
Antiguo 12-03-2012
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Poder: 14
negrokau Va por buen camino
Talking

Cita:
Empezado por ElDioni Ver Mensaje
Hola,

si los tienes en edits separados y quieres utilizar los valores de los edits para montar una consulta en un Adoquery por ejemplo sería algo así:

Código Delphi [-]
adoquery1.close;
adoquery1.SQL.Text:='SELECT * FROM productos WHERE codigo='+edit1.text+' AND categoria LIKE '+quotedstr('%'+edit2.text+'%')+' AND descripcion LIKE '+quotedstr('%'+edit3.text+'%');
adoquery1.open;


No se si así te lo ves claro, también puedes hacerlo pasando como parametros los edit, tema que se ha tratado bastante en los foros.

Saludos.
que significa "quotedstr"?
Responder Con Cita
  #6  
Antiguo 12-03-2012
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
la funcion quotedstr encierra entre comillas simples lo que pases como parametro
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 12-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por ElDioni Ver Mensaje
también puedes hacerlo pasando como parametros los edit, tema que se ha tratado bastante en los foros.
Estoy totalmente de acuerdo con esa opción, es mas legible y lo más importante: Muchísimo mas segura.
Código Delphi [-]
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM PRODUCTOS ');
    SQL.Add('WHERE CODIGO LIKE :COD AND CATEGORIA LIKE :CAT AND DESCRIPCION LIKE :DES');
    Parameters.ParamByName('COD').Value:= '%'+Edit1.Text+'%';
    Parameters.ParamByName('CAT').Value:= '%'+Edit2.Text+'%';
    Parameters.ParamByName('DES').Value:= '%'+Edit3.Text+'%';
    Open
  end

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 12-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola ecfisa,

solo una pregunta, en el ejemplo que has puesto con los parametros, ¿habría que poner el quotedstr para que los pase con comillas?. Es decir:

Código Delphi [-]
with ADOQuery1 do   
  begin     
    Close;     
    SQL.Clear;     
    SQL.Add('SELECT * FROM PRODUCTOS ');     
    SQL.Add('WHERE CODIGO LIKE :COD AND CATEGORIA LIKE :CAT AND DESCRIPCION LIKE ES');        
    Parameters.ParamByName('COD').Value:=quotedstr('%'+Edit1.Text+'%');      
    Parameters.ParamByName('CAT').Value:=quotedstr('%'+Edit2.Text+'%');     
    Parameters.ParamByName('DES').Value:=quotedstr('%'+Edit3.Text+'%');     
    Open;   
  end;
¿o como lo has puesto tú se pasarían ya con comillas directamente?.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #9  
Antiguo 12-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por ElDioni Ver Mensaje
Hola ecfisa,

solo una pregunta, en el ejemplo que has puesto con los parametros, ¿habría que poner el quotedstr para que los pase con comillas?.
Hola ElDioni.

No, utilizando parámetros no es necesario el uso de la función QuotedStr.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Buscar dato, en varios campos ander Firebird e Interbase 5 23-11-2011 03:24:41
Buscar dato en TJvMemoryData BlueSteel Varios 10 16-06-2011 00:17:06
Asignacion multiple a varios componentes noseii Varios 6 02-05-2007 18:15:19
buscar si existe el dato Max_E. Conexión con bases de datos 1 14-11-2006 11:25:09
error en asignacion de campos en un dbgrid con seleccion multiple ElSanto24 Varios 1 05-01-2004 17:12:27


La franja horaria es GMT +2. Ahora son las 07:26:58.


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