Ajuda - Busca - Membros - Calendário
Versão Completa: Pesquisa Com Filtro Em Dblookupcombo
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
Antonio Jose
Pessoal...

meu problema é o seguinte:

eu tenho uma tabela fornecedores (paradox), e um DBLookupCombo ligado a essa tabela para que eu possa escolher o fornecedor quando estou cadastrando
alguma compra.

Como eu tenho muitos fornecedores, demoro muito pra encontrar no DBLookupCombo, apesar dele estar em ordem alfabética. Quando eu digito um fornecedor que começa com a letra T, ele vai automatico para essa letra. Mas mesmo assim aparece todos os outros fornecedores.

O que eu queria, era que quando fosse digitando, o DBLookupCombo já aparecesse somente o resultado da digitação, se eu colocar a letra T, sairia todos com a letra T, mas quando eu colocasse outra letra depois do T, como está, logo o os fonecedores que apareceria seria está..... despresando todos os outros.
Isso é possivel ?
JPedro
É possivel ... não me parece prático.

Temos duas hipóteses :

1 - Estás a usar TTable para lêr os fornecedores:
Podes usar o Event onKeyPress do DbLookupCombo em conjunto com o filter da TTable para reduzir o nº de campos lidos da tabela.
Esta operação é também bastante lenta.

2 - Estás a usar TQuery para lêr os fornecedores:
De novo com o envent de onKeyPress podes alterar o sql do query, fechar e voltar a abrir.
Mais uma vez, tens o problema da velocidade no acesso aos dados.

Dúvido que alguma destas soluções te vá dar mais velocidade.
Se quiseres, experimenta. Se tiveres dúvidas em relação ao código necessário para fazer isto, diz.
Pirambu!
Você também pode criar um form para fazer uma consulta de fornecedor, assim:

você cria um form para consulta de Fornecedor, vou chamar de "FormConsFor"

Coloca um botão ao lado do DBLookupCombo para abrir o FormConsFor, no FormConsFor você coloca:
edit, 2 Botão, Query, DataSouce e Dbgrid,
no primeiro botão você faz assim:
CODE
with query1 do
begin
close;
sql.clear
sql.add('select CodigoFornecedor, fornecedor');
sql.add('from tabelaFornecedor');
sql.add('where Fornecedor like :A');
parambyname('A').value := % + edit1.text + %;
open;
end;


no segundo botão você faz assim:
CODE
tableCadFornCodigoFornecedor.Value := (FormConsFor.query1codigoFornecedor.Value);
FormConsFor.close;


Tenta isso.

Abraço.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.