Pesquisa com condição por ComboBox

17/06/2016

0

Olá, estou trabalhando com um Edit que faz pesquisa no banco de dados e mostra no DBGrid pela condição dada:

procedure TCPForm.edt_pesquisarChange(Sender: TObject);
begin
FMForm.produtoQuery.SQL.Clear;
FMForm.produtoQuery.SQL.Add('Select * from produto where nome like :pValor');
FMForm.produtoQuery.Parameters.ParamByName('pValor').Value := '%' + edt_pesquisar.Text + '%';
FMForm.produtoQuery.Open;
end;


O problema é que ela se limita somente ao nome. Então criei uma ComboBox com os nomes dos campos do banco de dados, e tentei passar a seguinte instrução:

procedure TCPForm.edt_pesquisarChange(Sender: TObject);
begin
FMForm.produtoQuery.SQL.Clear;
FMForm.produtoQuery.SQL.Add('Select * from produto where :pCampo like :pValor');
FMForm.produtoQuery.Parameters.ParamByName('pCampo').Value := cbo.text;
FMForm.produtoQuery.Parameters.ParamByName('pValor').Value := '%' + edt_pesquisar.Text + '%';
FMForm.produtoQuery.Open;
end;


Como esperado, ela nao deu muito certo, então queria saber se há algum metódo de armazenar o campo escolhido na ComboBox e passar pra síntaxe SQL. A unica maneira que eu consegui encontrar pra fazer isso, é criar um if pra cada opção do combobox e setar um campo diferente pra cada if, porém acho que essa maneira é muito mecânica. Alguem poderia me dizer uma maneira de fazer isso?
Vitor Ferreira

Vitor Ferreira

Responder

Post mais votado

18/06/2016

FMForm.produtoQuery.close;
FMForm.produtoQuery.SQL.Clear;
FMForm.produtoQuery.SQL.Text:=
'Select * from produto where '+' pCampo like '+QuotedStr('%'+CBO.Text+'%');
FMForm.produtoQuery.OPEN;

Raimundo Pereira

Raimundo Pereira
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar