Olá pessoal, olá Eduardo.

Muito obrigado pelo pedaço de código. Abriu outras portas lógicas na minha 
cabeça.
Mas o código não funcionou por completo, um exemplo disso:

quando:

Data é <> ''
Numero é = ''
Doado <> ''

resposta: um and é colocado como ultima palavra da SQL Final.

mas estou trabalhando em cima disso... Infelizmente estou tendo q colocar mais 
ifs e elses, o que não me agrada muito, mas..... quem sabe é a única maneira...

Obrigado pela atenção!

Flávio


Eduardo <[EMAIL PROTECTED]> escreveu:    Ta na mao ...
 
 strsql := 'select * from patrimonio ';
 
 if (strdata <> '') or (strdoado <> '') or ( strnumero <> '') then
 begin
    strsql := strsql + ' where ';
    strsql := strsql + strdata;
    if (strdata <> '') then
       strsql := strsql +  ' and ';
    strsql := strsql +  strdoado;
    if (strdoado <> '') then
       strsql := strsql +  ' and ';
    strsql := strsql +  strnumero;
 end;
 strsql := strsql + ' order by "' + cbOrdenar.Text + '"';
 
 
 Eduardo
 Ps.: Não testei, mais ai é com vc !!!
 
 
 
 // SQL FINAL !!!
 
 
 Flavio escreveu:
 > Olá pessoal,
 >
 > estou aqui desta vez para pedir um auxílio. Talvez muitos já se 
 > depararam com essa situação antes. Estou programando com Delphi 6, 
 > Quick Report 3 e Interbase 6. É a seguinte:
 >
 > Tenho um form que possibilita o usuário emitir um relatório no QUick 
 > Report. Porém, o usuário pode "filtrar" a busca ao acessar os dados no 
 > interbase para jogar no relatório, como por exemplo pesquisar os 
 > patrimônios entre um intervalo de datas ou de ID´s ou até mesmo 
 > mostrar patrimônios doados ou não ou ambos.
 >
 > a minha sql é a seguinte:
 >
 > strdata := ' "data" BETWEEN '#39 +
 >                           meDataInicial.Text + #39' AND '#39 +
 >                      meDataFinal.Text + #39'';
 >
 > strdoado := ' "doado" IS NULL ';
 >
 > strnumero := ' "numero" BETWEEN ' +
 >                           eNumeroInicial.Text + ' AND ' +
 >                      eNumeroFinal.Text;
 >
 > // SQL FINAL !!!
 > strsql := 'select * from patrimonio where' + strdata + ' AND ' + strdoado
 >                        + ' AND ' + strnumero + ' order by "' + 
 > cbOrdenar.Text + '"';
 >
 >
 > Agora suponha que não queira filtrar nada da busca. Então perceba que 
 > a palavra where vai ocasionar um erro. Agora suponha que queira buscar 
 > por data, doado, mas não número. Então a palavra (o segundo AND da SQL 
 > FINAL) AND vai precisar de uma palavra (coluna) seguinte.
 >
 >
 > O que estou querendo saber é se alguém possui uma idéia boa de como 
 > contornar esse problema, esquivando-se de inúmeros if´s else´s.
 >
 >
 > Obrigado pela atenção de todos !!!
 >
 > Flávio
 >
 >            
 > ---------------------------------
 > Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu 
 > celular. Registre seu aparelho agora!
 >
 > [As partes desta mensagem que não continham texto foram removidas]
 >
 >  
 
 
             
 _______________________________________________________ 
 Yahoo! Acesso Grátis - Internet rápida e grátis. Instale 
 o discador agora! 
 http://br.acesso.yahoo.com 
   

                
---------------------------------
 Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! 

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



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a