GARANTIR DESCONTO

Fórum filtrar registros sem fazer nova consulta ao banco #352243

22/01/2008

0

bom dia a todos.
bem eu tenho um dbgrid e um edit para filtrar, inicialmente eu tinha um botão e no onclick fazia um select assim:
´select * from tabtal where upper(nome) like upper(´ + #39 + ´¬´ + edit_NomeCliente.Text + ´¬´ + 39 + ´) order by nome´;

funciona, mas o que eu quero é não ter que fazer outra pesquisa no banco diminuindo a performance, um colega disse pra eu usar locate.
CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loCaseInsensitive]);

esse código aí não faz nada, pois eu quero que a medida que o usuario vai digitando as letras os nomes vão sendo filtrados no grid.
vlw!


Etspaz

Etspaz

Responder

Posts

22/01/2008

Paullsoftware

bom dia a todos. bem eu tenho um dbgrid e um edit para filtrar, inicialmente eu tinha um botão e no onclick fazia um select assim: ´select * from tabtal where upper(nome) like upper(´ + #39 + ´¬´ + edit_NomeCliente.Text + ´¬´ + 39 + ´) order by nome´; funciona, mas o que eu quero é não ter que fazer outra pesquisa no banco diminuindo a performance, um colega disse pra eu usar locate. CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loCaseInsensitive]); esse código aí não faz nada, pois eu quero que a medida que o usuario vai digitando as letras os nomes vão sendo filtrados no grid. vlw!

Creio que se você mudar loCaseInsensitive
CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loCaseInsensitive]);
por loPartialKey
assim:
CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loPartialKey]);
vai resolver :wink:


Responder

Gostei + 0

22/01/2008

Asales

Você também pode utilizar desta forma:
CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[[b:e83311cd4f]loPartialKey, loCaseInsensitive[/b:e83311cd4f]]);

Assim, além dele pesquisar por parte da palavra, a consulta não vai diferenciar letras maiúsculas de minúsculas.


Responder

Gostei + 0

22/01/2008

Etspaz

Paullsftware, primeiro obrigado por me atender.
realmente deu certo, mas agora eu quero saber se tem como fazer os outros registros que não satisfaçam o que está sendo digitatado sumam e fiquem somente os que forem encontrados com o locate, pelo que vi ele para o ponteiro no registro encontrado apenas.
e quando fossem sendo apagadas as letras fossem voltando de acordo com o que estiver no edit, a medida que se deixar o edit vazio volte a exibir todos os registros, como no help de alguns programas.


Responder

Gostei + 0

22/01/2008

Etspaz

Você também pode utilizar desta forma: CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loPartialKey, loCaseInsensitive]);


vlw asales, vou usar também o loCaseInsensitive.


Responder

Gostei + 0

22/01/2008

Ara.es

o locate localiza um registro, para filtrar use o filter.

vc pode fazer assim:

ClientDataset.Filtered := False;
ClientDataset.Filter     := ´campo = 1´;
ClientDataset.Filtered := True;



Responder

Gostei + 0

22/01/2008

Etspaz

a dica do ara.es serviu certinho , na verdade era que não estava sabendo perguntar.
eu fiz assim:

 cds_contato.Filtered := False;
  cds_contato.Filter     := ´nome like ´ + #39 + ´¬´ +    Edit_filtranome_contato.Text + ´¬´ + 39 ;
  cds_contato.Filtered := True;
 


obrigado a todos!


Responder

Gostei + 0

22/01/2008

Etspaz

a dica do ara.es serviu certinho , na verdade era eu que não estava sabendo perguntar.
eu fiz assim:

 cds_contato.Filtered := False;
  cds_contato.Filter     := ´nome like ´ + #39 + ´¬´ +    Edit_filtranome_contato.Text + ´¬´ + 39 ;
  cds_contato.Filtered := True;
 


obrigado a todos!


Responder

Gostei + 0

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

Aceitar