Filtro em Table
Boa noite pessoal,
Estou aqui novamente com mais uma dúvida. É o seguinte: Estou fazendo um filtro em uma tabela (necessito de filtro aproximado), vejam o meu código abaixo:
blEstabelecimento.Filtered := False;
tblEstabelecimento.Filter := 'NomeFantasia Like' + QuotedStr('%'+edtPesEstabelecimento.Text+'%');
tblEstabelecimento.Filtered := True; O que acontece, quando executo o filtro dá o seguinte erro: Perguntas? O filtro está errado? Esse erro tem alguma coisa a ver com BD? Estou usando Delphi 7 e Firebird 2.0 Wanderson Ramos
tblEstabelecimento.Filter := 'NomeFantasia Like' + QuotedStr('%'+edtPesEstabelecimento.Text+'%');
tblEstabelecimento.Filtered := True; O que acontece, quando executo o filtro dá o seguinte erro: Perguntas? O filtro está errado? Esse erro tem alguma coisa a ver com BD? Estou usando Delphi 7 e Firebird 2.0 Wanderson Ramos
Wanderson Queiroz
Curtidas 1
Melhor post
Leandro Calixto
06/04/2015
No Delphi 7 não se usa %
tente
tblEstabelecimento.Filtered .Close
tblEstabelecimento.Filtered := False;
tblEstabelecimento.Filter := 'NomeFantasia LIKE ' + QuotedStr( '*' + edtPesEstabelecimento.Text + '*' );
tblEstabelecimento.Filtered := True;
tblEstabelecimento.Filtered.Open
tente
tblEstabelecimento.Filtered .Close
tblEstabelecimento.Filtered := False;
tblEstabelecimento.Filter := 'NomeFantasia LIKE ' + QuotedStr( '*' + edtPesEstabelecimento.Text + '*' );
tblEstabelecimento.Filtered := True;
tblEstabelecimento.Filtered.Open
GOSTEI 1
Mais Respostas
Rafael Ribeiro
23/10/2010
Primeiro você deve dar um close na tabela e depois de realizar o filtro deve dar um open.
Espero ter colcaborado.
Rafael
Espero ter colcaborado.
Rafael
GOSTEI 0
Wanderson Queiroz
23/10/2010
Rafael,
Obrigado por tentar ajudar, mas não funcionou. Continua dando o mesmo erro!
GOSTEI 0
Carlos Júnior
23/10/2010
Wanderson,
Esse é um erro classico de quem usa o Filter, que pessoal mente não gosto.
Prefira usar o SQL.
Nos comandos SQL você usa o % junto com o comando Like, porém com o filter não é possivel.
Deve usar dessa forma:
qyConsulta.Filtered := false;
qyConsulta.Filter := ' nome like ' + QuotedStr('*' + BDEdit3.Text + '*');
qyConsulta.Filtered := true; Espero ter ajudado. Carlos.
qyConsulta.Filter := ' nome like ' + QuotedStr('*' + BDEdit3.Text + '*');
qyConsulta.Filtered := true; Espero ter ajudado. Carlos.
GOSTEI 0
Wanderson Queiroz
23/10/2010
Carlos,
Não sei o que está acontecendo, mas continua dando o mesmo erro. Só uma observação: Não estou usando DBEdit e sim Edit. Uso também Delphi 7 e Firebird 2.0.
Obrigado assim mesmo, por sua ajuda. Entendi bem sua explicação.
Wanderson Ramos
Não sei o que está acontecendo, mas continua dando o mesmo erro. Só uma observação: Não estou usando DBEdit e sim Edit. Uso também Delphi 7 e Firebird 2.0.
Obrigado assim mesmo, por sua ajuda. Entendi bem sua explicação.
Wanderson Ramos
GOSTEI 0
Wilson Junior
23/10/2010
Tente assim:
Espero ter colaborado.
tblEstabelecimento.Filtered := False; tblEstabelecimento.Filter := 'NomeFantasia LIKE ' + QuotedStr( '%' + edtPesEstabelecimento.Text + '%' ); tblEstabelecimento.Filtered := True;
Espero ter colaborado.
GOSTEI 0
Joao Souza..
23/10/2010
Ola Pessoal Bom dia....
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
GOSTEI 0
Joao Souza..
23/10/2010
Ola Pessoal Bom dia....
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
GOSTEI 0
Joao Souza..
23/10/2010
Ola Pessoal Bom dia....
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
GOSTEI 0
Joao Souza..
23/10/2010
Ola Pessoal Bom dia....
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
Bom tenho uma tabela em Paradox chamada (TbPedLocal)
Nesta tabela tenho 3 campos (Emissao, Numero, NomCli)
estou fazendo ums fitros quando faço filtro pelo Numero ou pela data de emissao Funciona certinho
mas quando tento fazer o filtro pelo Nome aproxinado do cliente nao funciona
estou fezendo desta forma
Dm.TbPedLocal.Close;
Dm.TbPedLocal.Filtered := False;
If (Rg_PesqOrca.ItemIndex=1) Then Dm.TbPedLocal.Filter := Emissao>= + QuotedStr(Mke_data_Ini.Text) + and Emissao = + QuotedStr(Mke_NumOrca.Text); (FUNCIONA CERTINHO)
If (Rg_PesqOrca.ItemIndex=3) Then Dm.TbPedLocal.Filter := NomCli LIKE + QuotedStr(Ed_NomCLie.Text + % ); (NAO FUNCIONA)
Dm.TbPedLocal.Filtered := True;
da errro
Operation Not aplication
GOSTEI 0
Lindemberg Cortez
23/10/2010
Poxa, é por que voces não estão colocando "ESPAÇO" depois do "LIKE"
Errado
Nome LIKE+quotedstr(...
Certo
Nome LIKE +quotedstr(...
Errado
Nome LIKE+quotedstr(...
Certo
Nome LIKE +quotedstr(...
GOSTEI 0
Deivison Melo
23/10/2010
Depois da última orientação foram feitos novos testes?
POsso finalizar o tópico?
POsso finalizar o tópico?
GOSTEI 0
Wanderson Queiroz
23/10/2010
Leandro,
Assim funcionou:
procedure TfrmEstabelecimento.edtPesEstabelecimentoKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
var Texto : String;
begin
If(Trim(edtPesEstabelecimento.Text) <> '') and (Key=VK_RETURN) Then
begin
Texto := edtPesEstabelecimento.Text+'*';
tblEstabelecimento.Filtered := False;
tblEstabelecimento.Filter := 'NomeFantasia = ' + QuotedStr(Texto);
tblEstabelecimento.Filtered := True;
frmEstabelecimento.FormShow(Sender);
end
Else
begin
If(Trim(edtPesEstabelecimento.Text) = '') and (Key=VK_RETURN) Then
tblEstabelecimento.Filtered := False;
frmEstabelecimento.FormShow(Sender);
end;
end;
Mesmo assim, muito obrigado por sua ajuda.
Assim funcionou:
procedure TfrmEstabelecimento.edtPesEstabelecimentoKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
var Texto : String;
begin
If(Trim(edtPesEstabelecimento.Text) <> '') and (Key=VK_RETURN) Then
begin
Texto := edtPesEstabelecimento.Text+'*';
tblEstabelecimento.Filtered := False;
tblEstabelecimento.Filter := 'NomeFantasia = ' + QuotedStr(Texto);
tblEstabelecimento.Filtered := True;
frmEstabelecimento.FormShow(Sender);
end
Else
begin
If(Trim(edtPesEstabelecimento.Text) = '') and (Key=VK_RETURN) Then
tblEstabelecimento.Filtered := False;
frmEstabelecimento.FormShow(Sender);
end;
end;
Mesmo assim, muito obrigado por sua ajuda.
GOSTEI 1
Christian Santos
23/10/2010
Pessoal estou usando o Delphi 10.3.3 uma solução alternativa que encontrei foi esta abaixo:
dmIFood.mtItensComplementos.Filter := Format('idsubgrupo like %s', [QuotedStr('%' + dmIFood.mtSubGrupoid.AsString + '%')]);
dmIFood.mtItensComplementos.Filtered := True;
dmIFood.mtItensComplementos.Filter := Format('idsubgrupo like %s', [QuotedStr('%' + dmIFood.mtSubGrupoid.AsString + '%')]);
dmIFood.mtItensComplementos.Filtered := True;
GOSTEI 0
Vanessa Cruz
23/10/2010
Pessoal eu utilizo dessa forma para filtrar um campo string:
Espero ter ajudado.
meuClientDataSet.Filtered := False; meuClientDataSet.Filter := ''''UPPER(NOME) LIKE (''''+ QuotedStr(trim(edtNome.Text) + ''''%'''') + '''')''''; //Busca todos os nomes que iniciem com o texto digitado. meuClientDataSet.Filtered := True;
Espero ter ajudado.
GOSTEI 0