Fórum Loop muito lento #327935

23/08/2006

0

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

Responder

Posts

23/08/2006

Marcelo_mileris

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);




Responder

Gostei + 0

23/08/2006

Marco Salles

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...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar