DÚVIDA CONSULTA
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.
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
Curtidas 0
Respostas
Biscalquini
21/03/2003
Me diga o banco, e os componentes que está usando que aí posso te ajudar melhor....
GOSTEI 0
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
é 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
21/03/2003
deixe o dbgrid desabilitado e soh abilite ele depois de ter filtrado a informação!!!!
GOSTEI 0
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
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
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
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