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