Buenas estoy realizando un procedimiento para consolidar los datos de varias tablas en un sola, todas tiene la misma estructura, el problema es que el proceso tarda demasiado y mientras lo hace me cuelga la maquina y no se por donde va (uso tablas dbisam, no las uso por eleccion)
mi codigo es este
Código Delphi
[-]
with sqnominadetalle do
begin
close;
SQL.Clear;
SQL.Add('SELECT * FROM a2NominaDetalle');
ExecSQL;
sqnominadetalle.First;
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;
with sqverificardetalle do
begin
close;
ParamByName('PINTEGRANTE').AsString := cedintegrante;
ParamByName('PCONSTANTE').AsString := codconstante;
ExecSQL;
if not sqverificardetalle.IsEmpty then
begin
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
end
else
begin
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;
end;
end;
close;
end;
sqnominadetalle.Next;
end;
with sqstatus do
begin
close;
SQL.Clear;
SQL.Add('UPDATE SEDES SET SED_STATUS = :PSTATUS');
SQL.Add('WHERE ID_SEDE=:PIDSEDE');
ParamByName('PIDSEDE').AsString := codsede;
ParamByName('PSTATUS').AsInteger := 2;
ExecSQL;
end;
end;