Buenas Tomando la Recomendación de Todos he ido probando, al hacer el log me di cuenta que perdía tiempo en la consulta para verificar el detalle para lo cual en vez de hacerlo tome la recomendación de
Casimiro Notevi
Código Delphi
[-]
select * from tabla1;
while not tabla1.eof
try
update table 2...
except
insert into tabla 2...
end;
table1.next
end;i
y usando el log que me recomendó
duilioisola pude ver lo que tardaba en cada registro en mi ultima prueba tardo 48 minutos 78.648 registros creo que estaría bien dentro de los tiempos o por lo menos se me han mejorado los tiempo considerando que antes duraba 20 min con 120 registros y por tratarse de una base de datos como dbbisam
mi Codigo
Código Delphi
[-] while not sqnominadetalle.Eof do
begin
cedintegrante:=sqnominadetalle.FieldByName('FNM_INTEGRANTE').AsString;
codconstante:=sqnominadetalle.FieldByName('FNM_CONSTANTE').AsString;
fnmtipo:=sqnominadetalle.FieldByName('FNM_TIPO').AsInteger;
fnmvalorperiodo:=sqnominadetalle.FieldByName('FNM_VALORPERIODO').AsCurrency;
fnmvalordefault:=sqnominadetalle.FieldByName('FNM_VALORDEFECTO').AsCurrency;
fnmdescripcion:=sqnominadetalle.FieldByName('FNM_DESCRIPCIONPERIODO').AsString;
try
with squpdatenomina do
begin
ParamByName('PTIPO').AsInteger:=fnmtipo;
ParamByName('PCONSTANTE').AsString:=codconstante;
ParamByName('PINTEGRANTE').AsString:=cedintegrante;
ParamByName('PVALOR1').AsCurrency:= fnmvalordefault;
ParamByName('PVALOR2').AsCurrency:=fnmvalorperiodo;
ParamByName('PPERIODO').AsString:=fnmdescripcion;
ExecSQL;
Close;
end;
Log(sqnominadetalle.FieldByName('FNM_INTEGRANTE').AsString+sqnominadetalle.FieldByName('FNM_CONSTANT E').AsString);
except
with dbtsdetallenomina do
begin
tablename:='a2NominaDetalle';
Open;
Insert;
Append;
FieldByName('FNM_TIPO').AsInteger:=fnmtipo;
FieldByName('FNM_CONSTANTE').AsString:=codconstante;
FieldByName('FNM_INTEGRANTE').AsString:=cedintegrante;
FieldByName('FNM_VALORDEFECTO').AsCurrency:= fnmvalordefault;
FieldByName('FNM_VALORPERIODO').AsCurrency:=fnmvalorperiodo;
FieldByName('FNM_DESCRIPCIONPERIODO').AsString:=fnmdescripcion;
Post;
Close;
Close;
end;
end;
sqnominadetalle.Next;
end;