Fórum filtrar registros sem fazer nova consulta ao banco #352243
22/01/2008
0
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
Curtir tópico
+ 0Posts
22/01/2008
Paullsoftware
Creio que se você mudar loCaseInsensitive
CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loCaseInsensitive]);
assim:
CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loPartialKey]);
Gostei + 0
22/01/2008
Asales
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.
Gostei + 0
22/01/2008
Etspaz
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.
Gostei + 0
22/01/2008
Etspaz
vlw asales, vou usar também o loCaseInsensitive.
Gostei + 0
22/01/2008
Ara.es
vc pode fazer assim:
ClientDataset.Filtered := False; ClientDataset.Filter := ´campo = 1´; ClientDataset.Filtered := True;
Gostei + 0
22/01/2008
Etspaz
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!
Gostei + 0
22/01/2008
Etspaz
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!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)