filtrar registros sem fazer nova consulta ao banco
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!
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
Curtidas 0
Respostas
Paullsoftware
22/01/2008
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]);
assim:
CDS_CONTATO.Locate(´NOME´,Edit_filtranome_contato.Text,[loPartialKey]);
GOSTEI 0
Asales
22/01/2008
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.
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
Etspaz
22/01/2008
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.
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
Etspaz
22/01/2008
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.
GOSTEI 0
Ara.es
22/01/2008
o locate localiza um registro, para filtrar use o filter.
vc pode fazer assim:
vc pode fazer assim:
ClientDataset.Filtered := False; ClientDataset.Filter := ´campo = 1´; ClientDataset.Filtered := True;
GOSTEI 0
Etspaz
22/01/2008
a dica do ara.es serviu certinho , na verdade era que não estava sabendo perguntar.
eu fiz assim:
obrigado a todos!
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
Etspaz
22/01/2008
a dica do ara.es serviu certinho , na verdade era eu que não estava sabendo perguntar.
eu fiz assim:
obrigado a todos!
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