Filtro em Table

23/10/2010

0

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

Responder

Post mais votado

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

Leandro Calixto

Leandro Calixto
Responder

Mais Posts

23/10/2010

Rafael Ribeiro

Primeiro você deve dar um close na tabela e depois de realizar o filtro deve dar um open.

Espero ter colcaborado.

Rafael
Responder

23/10/2010

Wanderson Queiroz

Rafael,   Obrigado por tentar ajudar, mas não funcionou. Continua dando o mesmo erro!
Responder

24/10/2010

Carlos Júnior

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.
Responder

25/10/2010

Wanderson Queiroz

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
Responder

25/10/2010

Wilson Junior

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


Espero ter colaborado.
Responder

29/08/2013

Joao Souza..

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

Responder

29/08/2013

Joao Souza..

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

Responder

29/08/2013

Joao Souza..

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

Responder

29/08/2013

Joao Souza..

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

Responder

03/09/2013

Lindemberg Cortez

Poxa, é por que voces não estão colocando "ESPAÇO" depois do "LIKE"

Errado
Nome LIKE+quotedstr(...
Certo
Nome LIKE +quotedstr(...
Responder

03/09/2013

Deivison Melo

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

POsso finalizar o tópico?

Responder

06/04/2015

Wanderson Queiroz

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.
Responder

28/01/2020

Christian Santos

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;
Responder

23/07/2020

Vanessa Cruz

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.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar