Filtro em Table

Delphi

23/10/2010

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
Wanderson Queiroz

Wanderson Queiroz

Curtidas 1

Melhor post

Leandro Calixto

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
GOSTEI 1

Mais Respostas

Rafael Ribeiro

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
GOSTEI 0
Wanderson Queiroz

Wanderson Queiroz

23/10/2010

Rafael,   Obrigado por tentar ajudar, mas não funcionou. Continua dando o mesmo erro!
GOSTEI 0
Carlos Júnior

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.
GOSTEI 0
Wanderson Queiroz

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
GOSTEI 0
Wilson Junior

Wilson Junior

23/10/2010

Tente assim:
tblEstabelecimento.Filtered := False;
tblEstabelecimento.Filter   := 'NomeFantasia LIKE ' + QuotedStr( '%' + edtPesEstabelecimento.Text + '%' );
tblEstabelecimento.Filtered := True;


Espero ter colaborado.
GOSTEI 0
Joao Souza..

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

GOSTEI 0
Joao Souza..

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

GOSTEI 0
Joao Souza..

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

GOSTEI 0
Joao Souza..

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

GOSTEI 0
Lindemberg Cortez

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(...
GOSTEI 0
Deivison Melo

Deivison Melo

23/10/2010

Depois da última orientação foram feitos novos testes?

POsso finalizar o tópico?

GOSTEI 0
Wanderson Queiroz

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.
GOSTEI 1
Christian Santos

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;
GOSTEI 0
Vanessa Cruz

Vanessa Cruz

23/10/2010

Pessoal eu utilizo dessa forma para filtrar um campo string:
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
POSTAR