[firebase-br] Pesquisa Dinâmica.

Hugo Saraiva projcad2 em ig.com.br
Ter Jul 6 15:34:36 -03 2010


Caro Ederson,

    Se você usa Firebird, acho que a melhor de você fazer isso é usando o
comando execute statement.

    Um problema dessa solução é ter limitar a quantidade de parâmetros de
entrada. Se não quisesse limitar, poderia passar os parâmetros todos dentro
de um varchar, mas deixemos essa POG de fora.

    Supondo que tenhamos dez parâmetros de entrada. Sendo cinco (Valor1,
Valor2, ... Valor5) para os valores e cinco para indicar os campos (Campo1,
Campo2, ... Campo5).
...
PSQL = 'Select CARRO.MODELO, CARRO.MARCA, CARRO.ANO from CARRO Where
CARRO.CODIGO Is Not NULL ';
If ((Campo1 <> '') And (Campo1 Is Not NULL)) then
   PSQL = PSQL || ' And ' || Campo1 || ' = ' || Valor1;
If ((Campo2 <> '') And (Campo2 Is Not NULL)) then
   PSQL = PSQL || ' And ' || Campo2 || ' = ' || Valor2;
If ((Campo3 <> '') And (Campo3 Is Not NULL)) then
   PSQL = PSQL || ' And ' || Campo3 || ' = ' || Valor3;
If ((Campo4 <> '') And (Campo4 Is Not NULL)) then
   PSQL = PSQL || ' And ' || Campo4 || ' = ' || Valor4;
If ((Campo5 <> '') And (Campo5 Is Not NULL)) then
   PSQL = PSQL || ' And ' || Campo5 || ' = ' || Valor5;

PSQL = PSQL || ' Order By CARRO.MODELO, CARRO.MARCA, CARRO.ANO';

execute statement :PSQL Into :MODELO, :MARCA, :ANO;

Espero ter ajudado,

Hugo dos Santos Saraiva
Signature powered by WiseStamp <http://www.wisestamp.com/email-install>


Em 6 de julho de 2010 14:43, Ederson R. F. Lima <ed.rodrigo em gmail.com>escreveu:

> Obrigado pela ajuda de todos!
>
> @Hélio Oliveira: Gostei da sua solução, é bem parecida com a que estou
> usando. Obrigado.
> @Levy Moreira: Eu tinha feito exatamente igual você fez. Imagina isso pra
> 70
> campos. Obrigado.
> @Reijanio Numes Ribeiro: Eu, acho, que entendi como funcionaria aquele SQL
> dinâmicamente. Você poderia explicar exatamente como você adiciona parte a
> parte o comando? Que cuidados você toma e etc. Eu tenho uma idéia de
> algoritmo em PASCAL pra fazer o que preciso e o seu SQL pode ajudar
> bastante. Se você puder explicar.
>
> Se alguém tiver mais alguma sugestão, por favor diga. Quando meu algoritmo
> estiver pronto e funcionando, posto ele aqui.
>
> Abraços,
> Att
>
> Em 5 de julho de 2010 21:04, Reijanio Nunes Ribeiro
> <rnribeiro em gmail.com>escreveu:
>
> > dm.sqlpessoas.CommandText := 'select p.*, b.nomebai as bairro,cd.nomecid
> as
> > cidade,'+
> > ' u.siglauf as estado from  pessoa p'+
> > ' left outer join bairro b'+
> > ' left outer join cidade cd'+
> > ' left outer join uf u'+
> > ' on p.idbai = b.idbai'+
> > ' on p.idcid = cd.idcid'+
> > ' on p.iduf = u.iduf'+
> > ' where upper(p.idpes)'+
> > ' and upper(p. nomepes)'+
> > ' and upper(p. telpes)'+
> > ' and upper(p. dtnascpes)'+
> > ' and upper(p. endpes)'
> > dm.pessoas.Open;
> >
> >
> > Em 5 de julho de 2010 18:38, Levy Moreira <levymoreira.ce em gmail.com
> > >escreveu:
> >
> > > Faria assim:
> > >
> > > var
> > > pesquisa: string;
> > > begin
> > >  pesquisa:='select * from carro where codCarro not is null ';
> > >  if edMarca.text<>'' then
> > >    pesquisa:=pesquisa + 'and marca=' edMarca.text;
> > >  if edCor.text<>'' then
> > >    pesquisa:=pesquisa + 'and cor= ' edMarca.text;
> > >  ...
> > >  query.close;
> > >  query.Sql.clear;
> > >  query.sql.add(pesquisa);
> > >  query.open;
> > > end;
> > >
> > > obs:pode faltar umas aspas ai você ver...
> > > ______________________________________________
> > > 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
> >
>
>
>
> --
> - Éderson R. F. Lima
> -- Engenharia da Computação / 9º Termo
> --- Araçatuba/SP
> ______________________________________________
> 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