Buenas tengo las datas en diferentes capetas y en mi proyecto dos db origen y destino
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;
luego en la tabla a2NominaDetalle destino o casa matriz hago una consulta para verificar si el registro existe
Código Delphi
[-] 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;
en el segundo bloque es donde tarda demasiado
y por ultimo cambio el status