Pesquisa com dois filtros dbgrid com Delphi e firebird
Meu formulário de Pequisa está com um radiogroup, dois filtros usando combobox , uma Edit e uma bdgrid. Eu precisa selecionar um ítem do RadioGroup, e filtrar nas combobox. Ae depois pesquisar no edit e aparecer o resultado na bdgrid.
Estou usando Firebird com TIBQuery. Estou usando o código abaixo mais eu não sei como incluir os filtros combobox na pesquisa sql.
procedure TfrmPesqIpasgo.btnLocalizarClick(Sender: TObject);
begin
with dm.ibIpasgo do
case rdPesqLocador.ItemIndex of
0 :Begin
close;
sql.Clear;
sql.Add(''''select * from ipasgo'''');
SQL.Add(''''where upper(CODIGOIPASGO) like upper(''''+ QuotedStr(''''%'''' + edtpesquisa.Text + ''''%''''));
sql.Add('''')'''');
sql.Add(''''order by upper(CODIGOIPASGO)'''');
open;
end;
1 :Begin
close;
sql.Clear;
sql.Add(''''select * from ipasgo'''');
sql.Add(''''where upper(descricao) like upper(''''+ QuotedStr(''''%'''' + edtpesquisa.Text + ''''%''''));
sql.Add('''')'''');
sql.Add(''''order by upper(descricao)'''');
open;
end;
end;
dm.ibIpasgo.Open;
if dm.ibIpasgo.IsEmpty then
ShowMessage(''''Nenhum registro encontrado não encontrado!'''');
End;
Estou usando Firebird com TIBQuery. Estou usando o código abaixo mais eu não sei como incluir os filtros combobox na pesquisa sql.
procedure TfrmPesqIpasgo.btnLocalizarClick(Sender: TObject);
begin
with dm.ibIpasgo do
case rdPesqLocador.ItemIndex of
0 :Begin
close;
sql.Clear;
sql.Add(''''select * from ipasgo'''');
SQL.Add(''''where upper(CODIGOIPASGO) like upper(''''+ QuotedStr(''''%'''' + edtpesquisa.Text + ''''%''''));
sql.Add('''')'''');
sql.Add(''''order by upper(CODIGOIPASGO)'''');
open;
end;
1 :Begin
close;
sql.Clear;
sql.Add(''''select * from ipasgo'''');
sql.Add(''''where upper(descricao) like upper(''''+ QuotedStr(''''%'''' + edtpesquisa.Text + ''''%''''));
sql.Add('''')'''');
sql.Add(''''order by upper(descricao)'''');
open;
end;
end;
dm.ibIpasgo.Open;
if dm.ibIpasgo.IsEmpty then
ShowMessage(''''Nenhum registro encontrado não encontrado!'''');
End;
Vandeir
Curtidas 0
Respostas
Emerson Nascimento
28/03/2020
veja se é isto:
procedure TfrmPesqIpasgo.btnLocalizarClick(Sender: TObject); var sFiltro: string; sOrdem: string; begin sFiltro := ''; sOrdem := ''; case rdPesqLocador.ItemIndex of 0: begin sFiltro := 'upper(CODIGOIPASGO) like '+ QuotedStr('%' + upper(edtpesquisa.Text) + '%'); sOrdem := 'upper(CODIGOIPASGO)'; end; 1: begin sFiltro := 'upper(descricao) like '+ QuotedStr('%' + upper(edtpesquisa.Text) + '%'); sOrdem := 'upper(descricao)'; end; end; with dm.ibIpasgo do begin close; SQL.Clear; SQL.Add('select * from ipasgo'); SQL.Add('where '+sFiltro); SQL.Add('order by '+sOrdem); open; end; end;
GOSTEI 0
Emerson Nascimento
28/03/2020
corrigindo:
procedure TfrmPesqIpasgo.btnLocalizarClick(Sender: TObject); var sFiltro: string; sOrdem: string; begin sFiltro := ''; sOrdem := ''; case rdPesqLocador.ItemIndex of 0: begin sFiltro := 'upper(CODIGOIPASGO) like '+ QuotedStr('%' + uppercase(edtpesquisa.Text) + '%'); // uppercase() ou ansiuppercase() sOrdem := 'upper(CODIGOIPASGO)'; end; 1: begin sFiltro := 'upper(descricao) like '+ QuotedStr('%' + uppercase(edtpesquisa.Text) + '%'); // uppercase() ou ansiuppercase() sOrdem := 'upper(descricao)'; end; end; with dm.ibIpasgo do begin close; SQL.Clear; SQL.Add('select * from ipasgo'); SQL.Add('where '+sFiltro); SQL.Add('order by '+sOrdem); open; end; end;
GOSTEI 0
Vandeir
28/03/2020
Obrigado pelo retorno amigo. Eu precisava incluir mais um filtro nesse código, por exemplo. No meu banco de dados têm duas tabelas referente a essa tela de pesquisa. Uma tabela armazena a data de atualização da tabela de medicamentos, ae têm tabela correpondente a cada a cada data de atualização de medicamentos, toda vez que sai uma atualização nova eu atualizo, conforme abaixo:
TABELA VERSAO:
ID_VERSAO (chave primária)
DATA_VERSAO
TABELA IPASGO:
ID (chave primária)
ID_VERSAO ( FK - relacionamento) (Esse campo no formulário pesquisa eu precisava colocar um filtro na combobox)
CODIGO_MAT_MED
DESCRIÇÃO
TIPO (Aqui separa os dados por MAT ou MED - Onde precisava colocar um dos filtros no combobox do formulário de pesquisa)
VALOR
Então no código que vc me passou eu precisa incluir um filtro com a data de atualização, para que eu selecione a data, ue pesquisa apenas os registros referente a essa atualização, e dentro da tabela é divido em MAT e MED, ae precisa do segundo combobox para filtrar ou só mat ou só med, conforme necessidade do usuário.
TABELA VERSAO:
ID_VERSAO (chave primária)
DATA_VERSAO
TABELA IPASGO:
ID (chave primária)
ID_VERSAO ( FK - relacionamento) (Esse campo no formulário pesquisa eu precisava colocar um filtro na combobox)
CODIGO_MAT_MED
DESCRIÇÃO
TIPO (Aqui separa os dados por MAT ou MED - Onde precisava colocar um dos filtros no combobox do formulário de pesquisa)
VALOR
Então no código que vc me passou eu precisa incluir um filtro com a data de atualização, para que eu selecione a data, ue pesquisa apenas os registros referente a essa atualização, e dentro da tabela é divido em MAT e MED, ae precisa do segundo combobox para filtrar ou só mat ou só med, conforme necessidade do usuário.
GOSTEI 0