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