delphi4arab منتديات دلفي للعرب
كيف اظهار مجموع عمود من DBGRID - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف اظهار مجموع عمود من DBGRID (/showthread.php?tid=9758)



كيف اظهار مجموع عمود من DBGRID - zouaidahmed - 23-09-2018

السلام عليكم
عندي مشروع فية 2 من dbgrid 
 dbgrid 1 and dbgrid 2 مريوطين مع بعض عن طريق مستر ..
المهم اني لما dbgrid 1 تظهر الفواتير و عند النزال من فاتورة الى يظهر في dbgrid 2  تفصيلها و مكوناتها  لكل مكون مبلغ
اريد اظهار total  في EDIT1  مجموع المبالغ عمود المكونات ل DBGRID 2 ويتغير كلما غيرنا في DBGRID1
ارفقت مثال عن المشروع
https://drive.google.com/file/d/11tlo8RCl-JxRkUoN1lvThYM7J44RYRRP/view


RE: كيف اظهار مجموع عمود من DBGRID - merouane - 23-09-2018

تحسب المجموع لكل جدول الخاص بكل سجل رئيسي له من خلال AfterScroll للجدول الرئيسي (Master)

لم أقم بحساب Total manq Facture و Ecard: لأنني لم أفهمهم جيدا، وبما أنني قدمت لك التوجيه لن يكون صعبا استخراج النتيجة.

لا تنسى أن تضيف الأحداث في Events (événements)


PHP كود :
unit UDM;

interface

uses
  System
.SysUtils, System.Classes, Vcl.StdCtrls, Data.DB, Data.Win.ADODB;

type
  Tdm 
= class(TDataModule)
    ADOConnection1: TADOConnection;
    tbl_centre: TADOTable;
    ADOQuery1: TADOQuery;
    ds_centre: TDataSource;
    tbl_centrecentre_id: TIntegerField;
    tbl_centrecentre_nom: TWideStringField;
    tbl_centrecentre_tel01: TWideStringField;
    tbl_centrecentre_tel02: TWideStringField;
    tbl_manq: TADOTable;
    ds_manq: TDataSource;
    tbl_paiement: TADOTable;
    ds_paiement: TDataSource;
    tbl_depot: TADOTable;
    ds_depot: TDataSource;
    tbl_depotbrd_id: TIntegerField;
    tbl_depotcentre_id: TIntegerField;
    tbl_depotdepot_date: TDateTimeField;
    tbl_depotbrd_mont: TBCDField;
    tbl_depotnbr_fact: TIntegerField;
    tbl_depotdep_pye: TBooleanField;
    tbl_depotdepot_OBS: TWideStringField;
    tbl_paiementpey_id: TAutoIncField;
    tbl_paiementbrd_id: TIntegerField;
    tbl_paiementpy_date: TDateTimeField;
    tbl_paiementpy_nbrF: TIntegerField;
    tbl_paiementpy_mant: TBCDField;
    tbl_paiementpy_obs: TWideStringField;
    tbl_manqmnq_id: TAutoIncField;
    tbl_manqbrd_id: TIntegerField;
    tbl_manqfact_n: TIntegerField;
    tbl_manqmantdepot: TBCDField;
    tbl_manqmantpye: TBCDField;
    tbl_manqOBS: TWideStringField;
    procedure tbl_centreAfterScroll(DataSet: TDataSet);
    procedure tbl_depotAfterOpen(DataSet: TDataSet);
    procedure tbl_paiementAfterOpen(DataSet: TDataSet);
    procedure tbl_depotAfterScroll(DataSet: TDataSet);
  private
    { Private declarations }
    procedure Montants(T: TADOTable; E: String);
  public
    { Public declarations }
  end;

var
  dm: Tdm;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

uses unt_main;
{
$R *.dfm}

procedure Tdm.Montants(T: TADOTable; E: String);
var
  Montant: Currency;
  M_Field: String;
begin
  Montant 
:= 0;

  if T.Name = 'tbl_depot' then
    M_Field 
:= 'brd_mont'
  else if T.Name = 'tbl_paiement' then
    M_Field 
:= 'py_mant';

  T.DisableControls;
  T.First;
  while not T.Eof do
  begin
    Montant 
:= Montant + T.FieldByName(M_Field).AsFloat;
    T.Next;
  end;
  if E = 'Edit1' then
    Form2
.Edit1.Text := CurrToStrF(Montant, ffCurrency, 2)
  else if E = 'Edit3' then
    Form2
.Edit3.Text := CurrToStrF(Montant, ffCurrency, 2);

  T.EnableControls;
end;

procedure Tdm.tbl_centreAfterScroll(DataSet: TDataSet);

begin
  
if tbl_depot.Active then
  begin
    Montants
(tbl_depot, 'Edit1');
    Montants(tbl_paiement, 'Edit3');
  end;
end;

procedure Tdm.tbl_depotAfterOpen(DataSet: TDataSet);
begin
  Montants
(tbl_depot, 'Edit1');
end;

procedure Tdm.tbl_depotAfterScroll(DataSet: TDataSet);
begin
  Montants
(tbl_paiement, 'Edit3');
end;

procedure Tdm.tbl_paiementAfterOpen(DataSet: TDataSet);
begin
  Montants
(tbl_paiement, 'Edit3');
end;

end. 



RE: كيف اظهار مجموع عمود من DBGRID - zouaidahmed - 27-09-2018

شكرا جزيلا اخي merouane
لكن عند نسخ الاكواد و و ضعها في UDM كود لم يحدث شيئ و لم تظهر النتائج في Edit 1.2.3
الا امكن تبعثلي النسخة المعدلة من عندك
شكرا


RE: كيف اظهار مجموع عمود من DBGRID - merouane - 27-09-2018

(27-09-2018, 12:55 AM)zouaidahmed كتب : شكرا جزيلا اخي merouane
لكن عند نسخ الاكواد و و ضعها في UDM  كود لم يحدث شيئ و لم تظهر النتائج في Edit 1.2.3
الا امكن تبعثلي النسخة المعدلة من عندك
شكرا

ليس فقط نسخ الكود (يجب استبدال كل النص في UDM ونسخ كل الموجود في الرد السابق )
ربما أنك لم تخصص الأحداث 
tbl_centre
AfterScroll = tbl_centreAfterScroll


tbl_paiement
AfterOpen = tbl_paiementAfterOpen

tbl_depot
AfterOpen = tbl_depotAfterOpen
AfterScroll = tbl_depotAfterScroll

البرنامج مرفق


RE: كيف اظهار مجموع عمود من DBGRID - zouaidahmed - 29-09-2018

شكرا لك اخي مروان افدتني كثرا بارك الله فيك
Ecard هو الفارق بين
Montants(tbl_depot, 'Edit1' و Montants(tbl_paiement, 'Edit3')
يعني
Edit1 - Edit 3= Edit 4

شكرا مسبقا


RE: كيف اظهار مجموع عمود من DBGRID - zouaidahmed - 05-10-2018

شكرا لك اخي مروان افدتني كثرا بارك الله فيك
Ecard هو الفارق بين
Montants(tbl_depot, 'Edit1' و Montants(tbl_paiement, 'Edit3')
يعني
Edit1 - Edit 3= Edit 4

شكرا مسبقا