Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 04-08-2018
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 106
Poder: 12
marco3k Va por buen camino
Thumbs up Actualizar varias filas en un ClientDataSet desconectado.

Me respondo yo mismo XD, estuve revisando el código y aplique filtros al ClientDatSet principal TListado y la ejecución mejoró a 1.09 segundos, que ya me parece aceptable. Muestro el codigo final:
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;
    TListaBoletaTmp.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;
        TListado.Filter := '[ANIO] = ' + QuotedStr(TListaBoletaTmpANIO.Value) + ' and [MES] = ' +
        QuotedStr(TListaBoletaTmpMES.Value) + ' and [MES_SUP] = ' + QuotedStr(TListaBoletaTmpMES_SUP.Value) +
        ' and [DNI] = ' + QuotedStr(TListaBoletaTmpDNI.Value);
        TListado.Filtered := True;
        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;


Resumiendo si alguien quiere actualizar varias filas en un ClientDataSet desconectado, debe tener en cuenta lo siguiente:


1.- Aplicar la propiedad LogChanges := False del ClientDataset.
2.- Acceder directamente a los campos y no usar FieldByName("TuCampo").
3.- Aplicar Filtros en ves de condiciones al ClientDataSet ya que esto acelera mas el proceso en actualizaciones masivas.


Sin mas espero que a alguien mas le pueda servir lo que me paso a mi.
Aunque, aún me queda la duda de como sería con "rutinas de MIDAS".
Saludos y buen fin de semana.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar registros de ClientDataSet oscarac OOP 1 31-01-2018 10:01:00
Actualizar datos al clientdataset escorpionrojo43 Conexión con bases de datos 1 14-08-2013 17:51:02
Actualizar ClientDataSet usando TADOQuery y DataSetProvider Walterio Providers 4 27-11-2012 20:01:00
Problema al actualizar con ClientDataSet con campos calculados LEVV Conexión con bases de datos 5 13-01-2012 23:29:24
Problemas al actualizar campos numéricos con ClientDataSet e IBX PINO72 Conexión con bases de datos 0 17-03-2007 01:37:44


La franja horaria es GMT +2. Ahora son las 09:28:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi