Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jessica07

Pesquisa parcial na GRID

Recommended Posts

Bom dia,

No evento onkeypress da grid coloquei o seguinte codigo para pesquisa:

dmPrincipal.query_clientes.Locate('cli_cidade', key, [loCaseInsensitive, loPartialKey]);


Porem se eu digito CAROL, a linha da grid vai para o primeiro cadastro com a letra C, ele nao vai direto para o cliente CAROL.. É como se a pesquisa estivesse filtrando apenas a primera letra, e nao a palavra digitada.

Preciso colocar esse codigo da pesquisa em outro evento da GRID?

Desde já agradeço.
Obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Jéssica, boa noite!

 

Vamos lá... O seu DBGrid não possui nenhum "lugar" para armazenar o que o usuário está digitando. Quando você tecla a letra "C", o programa executa o evento no OnKeyPress e vai para o primeiro registro que satisfaz a condição, no caso o cadastro com a letra "C". Depois qualquer coisa que você digitar vai acontecer o mesmo. Se digitar "C" e depois "A" ele vai para o primeiro registro que começa com a letra A, ignorando o "C" que veio antes!

 

O ideal é você colocar um Edit qualquer e no evento OnChange colocar:

 

dmPrincipal.query_clientes.Locate('nome_cliente', edit1.text, [loCaseInsensitive, loPartialKey]);

 

Só um questionamento ... Você tá pesquisando pelo nome do cliente ou pela cidade? Verifique o campo pelo qual está pesquisando... Nesse exemplo citado por ti, tá usando "cli_cidade"

 

Boa sorte!

 

Ps.: Eu particularmente prefiro fazer a pesquisa diretamente na minha query através do Like. Mais ou menos assim;

 

Query1.CommandText := 'SELECT * FROM CLIENTES WHERE NOME_CLIENTE LIKE QUOTEDSTR(EDIT1.TEXT + '%');

 

Dá mais trabalho, mas o resultado final, além de muito mais rápido, costuma ser melhor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.