Como filtrar um DBGrid através de um Edit no Delphi utilizando ADOQUERY

Delphi

30/10/2018

Boa noite,
tudo bem pessoal?

Estou com um problema em meu sistema, onde estou tentando filtrar os dados de minha DBGrid através de um Edit, porém estou sem resultado.

Estou colocando o comando no Evento OnChange:

if edit1.Text <>'' then
begin
ADOQUEY1.Locate('DESCRICAO_X', edit1.Text,[loPartialKey, loCaseInsensitive]);

end;

Gostaria que assim que eu fosse digitando no Edit ele já iria filtrando na DBGrid... Como posso realizar esse procedimento?
Vinicius David

Vinicius David

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

30/10/2018

Você quer filtrar ou localizar?

O comando Locate apenas tenta localizar o registro posicionando o cursor no registro encontrado.

O comando Filter mostra apenas o registro que correspondem a condição criada.

Veja um exemplo do Filter:

 
if Edit1.Text <> EmptyStr then
begin
  with Adoquery1 do
  begin
    Filtered := False;
    Filter := 'DESCRICAO_X like ' + QuotedStr('*' + Edit1.Text + '*');
    Filtered := True;    
  end;
end;
GOSTEI 1

Mais Respostas

Vinicius David

Vinicius David

30/10/2018

Bom dia,

Ao tentar colocar esse código no OnChange aparece essa mensagem:

O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.

Seria no Evento OnChange do Edit que devo colocar?
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

30/10/2018

Normalmente esta mensagem de erro aparece quando a query não reconhece o nome do campo a ser filtrado.

O nome do campo realmente é DESCRICAO_X ? Verifique o nome do campo.
GOSTEI 0
Vinicius David

Vinicius David

30/10/2018

Realmente o sistema esta se perdendo Natanael.
No query que estou utilizando eu crio um novo FIELD e atribuo esse field a outro ADOQUERY. Coloco o nome da outra tabela do ADOQUERY e mesmo assim não consigo.

Quando utilizo o código:

ADOQUEY1.Locate('DESCRICAO', edit1.Text,[loPartialKey, loCaseInsensitive]);

Porém em outra tabela e não crio outro FIELD para juntar as tabelas ele da certo, onde a DBGrid mostra com a seta onde esta o Processo que necessito.

Esse comando FILTER que me passou não consegui utiliza-lo.
GOSTEI 0
POSTAR