Jessica07 0 Denunciar post Postado Maio 8, 2015 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
Dellas Cápua 1 Denunciar post Postado Junho 9, 2015 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