DÚVIDA CONSULTA

Delphi

21/03/2003

COMO POSSO FAZER COM QUE UMA TABELA SÓ MOSTRE OS ITENS QUE EU DIGITAR PARA PESQUISAR??

POR EXEMPLO O DBGRID ESTÁ LIGADO COM A TABELA DE DOCUMENTOS, ENTÃO APARECE TODOS OS CAMPOS DELA, E CONFORME EU DIGITO NO MASKEDIT O NOME DO CLIENTE, ELE VAI FAZENDO A CONSULTA.
SÓ Q EU QUERIA Q ELE SÓ FOSSE MOSTRANDO SÓ O NOME DO CLIENTE Q EU FOSSE DIGITANDO NO MASKEDIT E NÃO MOSTRAR TODOS OS NOMES.


Rafaela

Rafaela

Curtidas 0

Respostas

Biscalquini

Biscalquini

21/03/2003

Me diga o banco, e os componentes que está usando que aí posso te ajudar melhor....


GOSTEI 0
Rafaela

Rafaela

21/03/2003

Estou usando paradox mesmo...
é uma consulta simples só que não quero q o dbgrid me mostre todos os registros da tabela q ele está ligado e sim os registros q eu for digitando no maskedit....
por exemplo se eu digito no maskedit o nome RAFAELA, o dbgrid tem q me trazer TODOS os registros q contenham o nome RAFAELA entendeu???.......


Grata

RAFAELA


GOSTEI 0
Anonymous

Anonymous

21/03/2003

deixe o dbgrid desabilitado e soh abilite ele depois de ter filtrado a informação!!!!


GOSTEI 0
Biscalquini

Biscalquini

21/03/2003

Vc pode fazer de duas formas:

Do jeito que vc quer, faça com query: No evento onchange do edit coloque:
With Query, SQL do
begin
Close;
Clear;
Add(´SELECT * FROM TABELA´);
Add(´WHERE NOME LIKE :Nome´);
Params[0].AsString:=Edit1.Text+´¬´;
Open;
end;

Dessa forma ele vai achar somente os registros que começam com o que vc escrever no edit, mas pode ficar lento dependendo do número de registros em sua tabela, crie um índice com o NOME para melhorar a performance;

O segundo modo é com Table:

No evento onchange do edit coloque;

Table1.FindNearest([Edit1.Text]);

ele é case sensitive, isto é, diferencia maiúsculas de minúsculas, mas o processo é bem mais rápido, na propriedade IndexName da Table selecione o indice que corresponde o nome para o comando funcionar.

Espero ter ajudado


GOSTEI 0
Anonymous

Anonymous

21/03/2003

Rafaela, assim é bem mais fácil...

no onChange do Edit faça:

if Tabela.Locate(´NOME´,Edit.text,[loCaseInsensitive,loPartialKey]) then
Edit.Text := TabelaNome.Value;


T+

Se não funcionar avisa


GOSTEI 0
POSTAR