Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar DataSource Dinamicamente (https://www.clubdelphi.com/foros/showthread.php?t=93822)

oscarac 20-03-2019 16:52:52

Cambiar DataSource Dinamicamente
 
buenos dias
tengo una rutina de suma de varios registros de un ClientDataSet

Código Delphi [-]
procedure TfrmIngresoComprobantesVarios.Sumar;
var _Position :TBookmark;
begin
 _position := CdsDetalle.GetBookmark;
  _TotalDebeMN := 0;
  _TotalHaberMN := 0;
  _TotalDebeME := 0;
  _TotalHaberME :=0;
  CdsDetalle.First;
  while Not CdsDetalle.Eof do
  begin
    if _en(CdsDetalleDh.AsString, '1DI+') then
    begin
      _TotalDebeMN := _TotalDebeMN + CdsDetallen_imp.AsFloat;
      _TotalDebeME := _TotalDebeME + CdsDetalleu_imp.AsFloat;
    end
    Else
    begin
      _TotalHaberMN := _TotalHaberMN + CdsDetallen_imp.AsFloat;
      _TotalHaberME := _TotalHaberME + CdsDetalleu_imp.AsFloat;
    end;
    CdsDetalle.Next;
  end;
  CdsDetalle.Bookmark := _Position;
end;

esto quiero llevarlo a una libreria para que pueda sumar los registros de diferentes ClientDataSet
como asigno dinamicamente el dataset a sumar?

me echan una mano?

oscarac 20-03-2019 18:19:14

Lo Solucione de esta manera, por si a alguien le sucede lo mismo

Código Delphi [-]
Procedure _Cuadrar (Alias :TDataSource);
Var tn_hb, tn_db, tu_hb, tu_db : Double;
z_recno : TBookmark;
Data : TDataSet;
Begin
  Data := Alias.DataSet;
  tn_db := 0;
  tn_hb := 0;
  tu_db := 0;
  tu_hb := 0;

  z_recno := Data.GetBookmark;
  Data.First;
  while not Data.eof do
  begin
    if _En (Data.FieldByName('dh').AsString, '1Dd+') then
    begin
      tn_db := tn_db +  Data.FieldByName('n_imp').AsFloat;
      tu_db := tu_db +  Data.FieldByName('n_imp').AsFloat;
    end
    Else
    begin
      tn_hb := tn_hb +  Data.FieldByName('n_imp').AsFloat;
      tu_hb := tu_hb +  Data.FieldByName('n_imp').AsFloat;
    End;
    Data.Next;
  End;

Casimiro Notevi 20-03-2019 19:38:17

^\||/^\||/^\||/

cloayza 20-03-2019 20:04:07

Estimado Oscarac, si me lo permite, le presento esta otra opción que utilizo frecuentemente...

Opción 1: :D
Código Delphi [-]
{
_Cuadrar( Alias.DataSet );
}
Procedure _Cuadrar (Data:TDataset);
Var tn_hb, tn_db, tu_hb, tu_db : Double;
z_recno : TBookmark;
  {Data : TDataSet;}
Begin
    {Data := Alias.DataSet;}
....
End;

Opción 2 :D
Código Delphi [-]
Procedure _Cuadrar (Data:TClientDataset);
Var tn_hb, tn_db, tu_hb, tu_db : Double;
z_recno : TBookmark;
 {Data : TDataSet;}
Begin
    {Data := Alias.DataSet;}
....
End;

Saludos cordiales


La franja horaria es GMT +2. Ahora son las 19:12:44.

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