Prueba a realizar el proceso entero dentro de una transaccion. Sería mas o menos:
Código Delphi
[-]
db.StartTransaction;
If Datamodule2.REMMAE.Locate('CODEMP',Campos[0],[]) then
begin
try
Datamodule2.REMMAE.Edit;
Datamodule2.REMMAE.Fields[42].Value := Strtofloat(Campos[1]);
Datamodule2.REMMAE.Fields[43].Value := Strtofloat(Campos[2]);
Datamodule2.REMMAE.Fields[44].Value := Strtofloat(Campos[3]);
Datamodule2.REMMAE.Fields[51].Value := Strtofloat(Campos[4]);
Datamodule2.REMMAE.Fields[50].Value := Strtofloat(Campos[5]);
Datamodule2.REMMAE.Fields[36].Value := Strtofloat(Campos[6]);
Datamodule2.REMMAE.Fields[47].Value := Strtofloat(Campos[7]);
Datamodule2.REMMAE.Post;
db.Commit;
except on e:exception do begin
showmessage(e.message); db.Rollback;
end;
end;
end;
Mas o menos. Lo he hecho sobre la marcha igual ni compila
, pero la idea es esa.
Pero insisto, si la tabla sobre la que estas haciendo un "locate" no tiene ningún índice...mal vamos...ya que por eso seguramente parezca que se te queda colgado aunque realmente estará buscando como un loco.