Loop muito lento

Delphi

23/08/2006

Pessoal tenho essa rotina de importação, mas quando passa dos 2000 registrios ela fica muito lenda. Aguem pode me dar uma dica.
O seguinte o banco origem é IB e o de destino é Mysql. desde já agradeço a todos.

while not CDTodos.EOF do
begin
try
ClientDataSet1.Open;
ClientDataSet1.Insert;
ClientDataSet1CPF.AsString := CDTodosCPF.AsString;
ClientDataSet1DATA.AsDateTime := CDTodosDATA.AsDateTime;
ClientDataSet1NOME.AsString := CDTodosVITIMA.AsString;
ClientDataSet1NUM_SINISTRO.AsString := CDTodosNUM_SINISTRO.AsString;
ClientDataSet1PROCURADOR_ID.AsInteger := CDTodosPROCURADOR_ID.AsInteger;
ClientDataSet1SEQUENCIAL.AsString := CDTodosSEQUENCIAL.AsString;
ClientDataSet1STATUS.AsString := CDTodosSTATUS.AsString;
ClientDataSet1.ApplyUpdates(-1);
CDTodos.Next;
end;


Debug

Debug

Curtidas 0

Respostas

Marcelo_mileris

Marcelo_mileris

23/08/2006

Posso estar dizendo bobagem... mas se vc colocar o ClientDataSet1.Open antes do while e ao invés de dar o ApplyUpdates dar um post e ao terminar o loop dar um ApplyUpdates

ClientDataSet1.Open;
while not CDTodos.EOF do
begin
try
  ClientDataSet1.Insert;
  ClientDataSet1CPF.AsString := CDTodosCPF.AsString;
  ClientDataSet1DATA.AsDateTime := CDTodosDATA.AsDateTime;
  ClientDataSet1NOME.AsString := CDTodosVITIMA.AsString;
  ClientDataSet1NUM_SINISTRO.AsString :=     CDTodosNUM_SINISTRO.AsString;
  ClientDataSet1PROCURADOR_ID.AsInteger :=   CDTodosPROCURADOR_ID.AsInteger;
  ClientDataSet1SEQUENCIAL.AsString := CDTodosSEQUENCIAL.AsString;
  ClientDataSet1STATUS.AsString := CDTodosSTATUS.AsString;
  ClienteDataSet1.Post;
  CDTodos.Next;
end;
ClientDataSet1.ApplyUpdates(-1);




GOSTEI 0
Marco Salles

Marco Salles

23/08/2006

Posso estar dizendo bobagem... mas se vc colocar o ClientDataSet1.Open antes do while e ao invés de dar o ApplyUpdates dar um post e ao terminar o loop dar um ApplyUpdates


ta dizendo bobagem não...


GOSTEI 0
POSTAR