Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2011
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
múltiples filtros de consulta

Hola amigos.

Estaba buscando la mejor manera de poder usar múltiples filtros en una consulta en función de checkbox, pero la única forma que se me ocurre es poner las palabras claves en diferentes strings y luego concatenarlas. No se si es lo más adecuado o existe otra forma más convincente y a la par elegante .

Gracias y FELIZ AÑO NUEVO!!!!
Responder Con Cita
  #2  
Antiguo 29-12-2011
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
me parece que lo mejor es el uso de procedimientos almacenados, mandas todos los parámetros a este e internamente armas un sql dinámico, preguntas que si cierto parámetro llega nulo no l tenga en cuenta, no recomiendo el uso de COALESCE ya que este mismo en una consulta con muchos registros en un where genera un scan sobre todos los registros sin filtrar, mejor armas el sql y lo qjecutas al fina, yo lo suelo hacer y me funciona muy bien.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #3  
Antiguo 02-01-2012
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Hola y gracias por responder.

ando perdido.

Para una consulta lo tengo montado asi:

Código Delphi [-]
zquery1.close;
 zquery1.sql.clear;
 zquery1.sql.text:='select sum(cmonto) as suma11 FROM tcheques where cbene=:cbene2';
 zquery1.parambyname('cbene2').asinteger:=filtro2;
 zquery1.Open;
  LABEL2.CAPTION:=FloatToStrF((zquery1.Fieldbyname('suma11').asfloat),ffcurrency,8,2);
ZQUERY1.SQL.Clear;
ZQUERY1.SQL.TEXT:='select * from tcheques where cbene=:cbene2';
zquery1.ParamByName('cbene2').asinteger:=filtro2;
zquery1.active:=true;
end;

donde suma11 es un campo que he tenido que crear porque sino no me lo reconoce (uso sqlite) con firebird no hacia falta.

filtro2 es la clave por la que se busca.

Eso así funciona, lo que no tengo muy claro, teniendo en cuenta que campos string para anidar no me lo recomiendas, como se haría con los procedimientos que me dices.

un saludo y gracias
Responder Con Cita
  #4  
Antiguo 02-01-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Pos para SQL Lite no se como se haría, pero te pongo un ejemplo del sp, la invocación desde Lazarus con ZeosDB que me parece es el que usas es simple, usa un componente que sino estoy mal es el TzStoredProcedure, este control se encarga de todo, solo le pasas los valores de los parámetros y ya.
Código SQL [-]
CREATE PROCEDURE spTest
@A VARCHAR(10),
@B VARCHAR(10),
@C VARCHAR(10)
AS
BEGIN
  DECLARE @SQL VARCHAR(2000);
  SET @SQL = 'SELECT COLUMNA1, COLUMNA2, COLUMNA3, COLUMNA4 FROM TABLA WHERE ';
  IF @A IS NOT NULL
    SET @SQL = @SQL + 'TABLA.CAMPO1 = ' + @A;
  END;

  IF @B IS NOT NULL
    SET @SQL = @SQL + 'TABLA.CAMPO2 = ' + @B;
  END;

  IF @C IS NOT NULL
    SET @SQL = @SQL + 'TABLA.CAMPO3 = ' + @C;
  END;

  EXEC(@SQL);
END;
__________________
mas confundido que Garavito el día del Niño.
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
referencia multiples bases de datos en una Consulta (Query) en firebird novato_erick SQL 25 04-07-2014 10:52:40
Agregar múltiples Campo de una tabla a múltiples TEdit y TdbEdit novato_erick Varios 21 21-08-2011 01:18:58
Ayuda con consulta y multiples tablas BlueSteel SQL 0 15-07-2011 19:03:14
como generar ventas multiples (seleccionar multiples items) userdelphi Varios 4 30-12-2010 02:52:21
Filtros sobre Filtros en Paradox Fabricio Tablas planas 9 03-04-2007 18:40:36


La franja horaria es GMT +2. Ahora son las 03:46:26.


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