Eu Uso assim.....


        with Query do
                begin
                        Close;
                        Sql.clear;

                        { SQL Principal    }
                        Sql.text    := 'SELECT * FROM TABELA ' ;

                        { Verifica se filtra por codigo }
                        if RgFiltro.itemIndex = 0 then
                            begin
                                        Sql.add ( ' WHERE CODIGO=:CODIGO ' );
                                        ParamByName('CODIGO').asinteger := 
StrToInt ( EdtCodigo.text );
                                end;

                      { Se filtra por Periodo    ]}
                       if ( DtIni.Text <> '' ) and ( Dtfin.text <> '' ) then
                                begin
                                            { Uso este IF para verificar se no 
SQL temo WHERE , se tiver é porque ja tem um filtro.... ai ele vai usar o AND 
); }
                                            if pos ( 'WHERE' , Sql.text ) > 0 
then
                                                    Sql.Add ( ' AND DATA 
BETWEEN :DTINI AND :DTFIN ' )
                                            else
                                                    Sql.add ( ' WHERE DATA 
BETWEEN :DTINI AND :DTFIN' );
                                            ParamByName('DTINI').asdate := 
DtIni.Date;
                                            ParamByName('DTFIN').asdate:= 
DtFin.date;
                                    end

                    end;



    Creio que seja isso o que vc quer... ai vc pode fazer o jeito que vc 
precisar.....



        Wesley





From: alessandra porto 
Sent: Tuesday, October 21, 2008 7:57 AM
To: delphi-br@yahoogrupos.com.br 
Subject: Re: [delphi-br] ideias ajuda


josebenedito

comecei a pegar  a  ideia vce  tem  um pedacinho de codigo  ai  que  vce  usa
para clarear a ideia

desde já agradeço  sua  atenção

--- Em ter, 21/10/08, JB <[EMAIL PROTECTED]> escreveu:
De: JB <[EMAIL PROTECTED]>
Assunto: Re: [delphi-br] ideias ajuda
Para: delphi-br@yahoogrupos.com.br
Data: Terça-feira, 21 de Outubro de 2008, 8:43

coloca todos os parametros e passa todos para a query, os q nao

utiliza passa o valor 0 por exemplo, e no sql vc verifica se o campo

eh igual a variavel ou a variavel eh igual a 0... entendeu?

2008/10/21 alessandra porto <alessandraporto11@ yahoo.com. br>:

> preciso de ideias de como fazer essa pesquisa de forma mais eficiente

> tenho que atraves de radiogroup deixar o usuario selecionar as opções que

> farão parte da pesquisa , cada opção carrega uma variavel

>

> tipo:

> paciente: medico convenio unidade

> geral geral geral geral

> nome medico convenio unidade

>

> paciente,medico, convenio, unidade

> são tabelas do banco que se ligam atraves de

> chaves.

>

> fiz algo assim:

>

> with DM3.Qry_Fatura_ Fat do

> begin

> Active:=false;

> sql.Clear;

> SQL.Add(CORPO_ SQL2+' WHERE (DTA_EMIS_GUIA >= :INIC AND

> DTA_EMIS_GUIA <=:FIM)'+COND_ FAT1+COND_ FAT2+COND_ FAT3+COND_ FAT4+COND_ 
> FAT5+'

> ORDER BY DTA_EMIS_GUIA ');

> ParamByName( 'CD_CONV' ).AsInteger :=CD_CONVENIO_ FAT;

> ParamByName( 'INIC').AsDate :=EinicFat.Date;

> ParamByName( 'FIM').AsDate :=EfinalFat. Date;

> Active:=True;

> end;

>

> corposql é uma variavel que contem o sql principal

>

> COND_FAT1+COND_ FAT2+COND_ FAT3+COND_ FAT4+COND_ FAT5

>

> seria as variaveis que receberiam os valores escolhidos pelo usuario

>

> o problema é como criar os

>

> ParamByName( '').Asinteger :=;

>

> conforme a necessidade do usuario

>

> pois nem sempre ele vai determinar valores todas as variaveis , há casos

> que quando geral não é necessario criar o ParamByName( '').Asinteger :=;

>

> ficaria grata aos amigos que ajudarem com ideias de como fazer isso de forma

> mais eficiente

>

> obs. essa é só uma parte a pesquisa envolve um maior numero de

> tabelas(opções) em uma só pesquisa

>

> Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua

> cara @ymail.com ou @rocketmail. com.

> http://br.new. mail.yahoo. com/addresses

>

> [As partes desta mensagem que não continham texto foram removidas]

>

> 

-- 

Att.

-- 

____________ _________ _______

José Benedito

Software Developer

josebenedito@ gmail.com

+55 19 8116-7826











__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]



 

__________ Information from ESET NOD32 Antivirus, version of virus signature 
database 3541 (20081021) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com


[As partes desta mensagem que não continham texto foram removidas]

Responder a