Hola compañeros, despues de analizar una recomendacion en este foro que hizo Al Gonzáles en este Hilo "clubdelphi.com/foros/showthread.php?t=85143&page=2" y cambie la propiedad LogChanges a False del ClientDataSet. Tambien cambie el acceso a los campos como indica el compañero Mick en este Hilo "clubdelphi.com/foros/showthread.php?t=21764".
Hice los cambios respectivos y la velocidad de ejecución de la rutina en Delphi bajo de 15 segundos a 3 segundos. El código quedo asi:
Código Delphi
[-]
procedure TLogicaBoletaPago.VerBoleta;
var var_cod_boleta_tmp,var_cod_boleta : string;
begin
if TListaBoletaTmp.RecordCount>0 then
begin
TListado.LogChanges := False; TListado.Filter := '';
TListado.Filtered := False;
TListado.First;
repeat
TListado.Edit;
TListadoSELECCION.Value := 0; TListado.Post;
TListado.Next;
until TListado.Eof;
TListado.First;
TListaBoletaTmp.First;
while TListaBoletaTmp.Eof = False do
begin
if TListaBoletaTmpSELECCION.Value=True then
begin
var_cod_boleta_tmp := TListaBoletaTmpANIO.Value +
TListaBoletaTmpMES.Value +
TListaBoletaTmpMES_SUP.Value +
TListaBoletaTmpDNI.Value +
TListaBoletaTmpTIPO_PLA.Value +
TListaBoletaTmpNRO_BOL.Value;
TListado.First;
while TListado.Eof = False do
begin
var_cod_boleta := TListadoANIO.Value +
TListadoMES.Value +
TListadoMES_SUP.Value +
trim(TListadoDNI.Value) +
TListadoTIPO_PLA.Value +
TListadoNRO_BOL.Value;
if var_cod_boleta_tmp = var_cod_boleta then
begin
TListado.Edit;
TListadoSELECCION.Value := 1;
TListado.Post;
end;
TListado.Next;
end;
end;
TListaBoletaTmp.Next;
end;
end;
TListaBoletaTmp.First;
TListado.Filter := '[seleccion] = 1';
TListado.Filtered := True;
end;
Aun asi la version de Visual FoxPro con muchos registros se demora 1 seg a lo mucho, si son pocos registros es milisegundos.
Hay algo que menciono Al Gonzáles mencionó en el Hilo que comente lineas arriba:
Cita:
...agregar los registros mediante llamadas de bajo nivel a las interfaces DSBase y DSCursor que contiene el objeto, es decir, ejecutando directamente rutinas de MIDAS. Con ello te ahorras un montón de trámites que la clase hereda de TDataSet.
|
Tendras Al Gonzáles o algún miembro de este foro algún ejemplo de como ejecutar rutinas MIDAS para reducir a 1 seg la ejecución de la rutina. O alguna otra recomendación que me pudieran brindar y por lo que busque no hay nada equivalente a "REPLACE ALL WITH 0" en Delphi.
Gracias de antemano si me pudieran brindar alguna ayuda.
PD: No puedo agredar hipervínculos asi que puse las direcciones sin el prefijo.