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]