limitar registro no combobox

Delphi

20/10/2006

Tenho uma rotina que coloca todos os clientes em um combobox em modo de execursão, so que a tabela tem 8 mil clientes e esta muito lento o loop, como posso aumentar a velocidade do loop
a rotina é esta:

[color=red:40001c862b]Combo3.Items.clear;
DM.SDS_Clientes.First;
While not DM.SDS_Clientes.Eof do begin
Combo3.Items.add(DM.SDS_clientes.Fieldbyname(´Nome´).asstring);
DM.SDS_Clientes.Next;
End;[/color:40001c862b]

Estou aberto a ideias... Obrigado a todos


Dpinho

Dpinho

Curtidas 0

Respostas

Corcos

Corcos

20/10/2006

não testei

pq não roda um select nome from tabela, armazena em uma variavel e joga a variavel no combo?

talvez seja mais rapido


GOSTEI 0
Paulocesar1301

Paulocesar1301

20/10/2006

Uma query é o melhor remédio mesmo, mas tente criá-la em tempo de execução... componentes, conexão, abertura, etc... no meu caso me parece rodar um pouco mais rápido...
Se vc recarrega a listagem com freqüência e os nomes não mudam tanto... carregue a tabela para uma pasta temporária e apenas teste a data da base quando for atualizar a listagem (no meu caso prefico o dividir para conquistar... não só em tabelas, mas em bancos tb, agiliza e facilita a manutenção)... uma boa é guardar a hora em que foi atualizada a lista e, de acordo com a experiência que tens quanto à atualização de seu banco colocar um período mínimo para atualização... algo do tipo:

If (HoraDaUltimaCarga + StrToTime(´00:30:00´)) < Time Then
begin
  If FileAge(CamDoBancoLocal) < FileAge(CamDoBancoNaRede) Then
     CopyFile(CamDoBancoNaRede, CamDoBancoLocal, False);
end;


... sei lá, é só uma idéia...
... e, é claro, sempre inclua uma barra de progresso para qualquer coisa que for fazer... mesmo sendo um processo lento, meus clientes ficam despreocupados quando sabem em que pé anda uma tarefa :wink:

Good Vibrations :wink: Good Coding :wink:


GOSTEI 0
Rodc

Rodc

20/10/2006

Tenta colocar o Combo3 invisível na hora de adicionar os dados.

Outra possibilidade seria criar um TStringList, adicionar os dados nele, e depois adicionar o StringList todo no combo com Combo3.Items.AddStrings(StringList);

E tenha certeza de ter colocado a propriedade Sort do Combobox como false.


GOSTEI 0
POSTAR