[firebase-br] RES: select dinamico

Moacir moacir em blusistemas.com.br
Qua Mar 17 08:40:31 -03 2010


Eu faço assim:

VSQL é uma varchar gigante.

VSQL = 'SELECT Campos 
          From Tabela '
         WHERE 1=1 ';

If VSETOR <> '' then
  VSQL = VSQL || 'AND SETOR = ' || :VSETOR;

If VGRUPO <> '' then
  VSQL = VSQL || 'AND GRUPO = ' || :VGRUPO;


  FOR EXECUTE STATEMENT VSQL
  INTO VARIAVEIS
  DO
  BEGIN
END

O WHERE 1=1 EU FACO PRA NÃO PRECISAR FICAR TESTANDO SE JÁ TEM OU NÃO O WHERE
NA STRING.

Espero ter ajudado.


Moacir.


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Augusto junior
Enviada em: quarta-feira, 17 de março de 2010 08:16
Para: FireBase
Assunto: Re: [firebase-br] select dinamico

var i:string;
     slq:string;
begin
   i:='';

   if setor<>nil then
      begin
           sql:='setor = :grupo ';
           I:=' and ';
     end;
   if grupo<>nil then
     if i='' then
          begin
           sql:='grupo= :grupo';
           i:=' and ';
           end
         else
          sql:=sql+ i +' grupo= :grupo ';

   if marca<>nil then sql:=sql+ i +' marca= :marca ';

acho que é isso.
Guto


Em 16 de março de 2010 15:55, Denilson
<denilson em compuserviceonline.com.br> escreveu:
> No delphi tenho um select dinamico onde tenho alguns testes
>
> so q ficou lento preciso fazer em uma procedure
>
>
>
> no delphi eu informo
>   codigo  do setor,
>   codigo  do grupo,
>   codigo  da marca
>   ...
>
>
> se os campos estiverm em branco pego geral
>
>    ex:select * from produtos
>
> mas se algum campo estiver prenchido
>
> se o grupo estiver preenchido:
>     ex: select * from produtos where grupo=:grupo
>
> se o grupo e o setor estiver preenchido
>
>     ex: select * from produtos where grupo=:grupo and setor=:setor
>
>
> como faco pra fazer em uma procedure nao sei como fazer?
>
>
>
>
>
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista