[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