Ver Mensaje Individual
  #23  
Antiguo 04-11-2022
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 275
Reputación: 17
webmasterplc Va por buen camino
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;
Responder Con Cita