حساب إجمالي حقل معين (كود دلفي)


السلام عليكم و مرحبا بكم في درس جديد  . هذا الدرس و هو عبارة عن مقال كتابي سنقوم فيه بشرح دالة تقوم بحساب مجموع حقل ما من جدول و في البداية دعوني أشير إلى بعض النقاط المتعلقة بهذا الدرس أو هذا الكود  عموما :
  • هذه الطريقة لا تعتبر الأفضل في الحساب
  • هذه الطريقة تكون بطئية في حالة عدد كبير من السجلات
  • توجد عدة طرق أخرى للحساب مثل استعمال إستعلامات SQL
سأضع لكطم الكود في قالب مناسب على شكل دالة بسيطة لكي تستخدموها في أي برامج لديكم أو تضيفوها لمكتباتكم 
function ColSum(Table: TDataSet; ColName: String): Double;
begin
  try
    Table.DisableControls;
    Table.First;
    Result := 0;
    While not(Table.EOF) do
    begin
      Result := Result + Table.FieldByName(ColName).AsFloat;
      Table.Next;
    end;
  finally
    Table.EnableControls;
  end;
end;
الأن هذه الدالة جاهزة مباشرة للإستخدام فقط قم بنسخها و لصقها في أي وحدة تريد و إبدأ الإستخدام . طريقة الإستخدام بسيطة جدا
مثال : لديك جدول إسمه Sells و فيه حقل إسمه Total , تريد مجموع قيم الحقل Total :
ColSum(Sells,'Total'); 
 و تريد وضع النتيجة في label مثلا :
Label.caption := ColSum(Sells,'Total').Tostring;
الآن لنأتي و نتعرف على أجزائ الدالة :
أولا لدينا 2 برامتر الأول هو الجدول و يمكنك وضع الجدول الذي أردت مثلا : Fdtable,ADOTable,ADOQuery...


  • ثم تكتب إسم الحقل بشكل صحيح و هذه الدالة تنتج لنا متغير من نوع Double و يمكنك تغيير نوعه لما يناسب حالتك إذا لم تكن double توفر المطلوب
  • نأتي لعبارة الدالة أولا توجد Try ... finally  و هو في حال حدث أي مشكل في عملية الحساب يقوم بعمل تفعيل لمكونات من جديد
  • ثم بعدها نجد الأجراء DisableControls و EnableControls في الأخير ولهما دور مهم في زيادة سرعة عملية الحساب و هذا بتوقيف المكونات و تفعيلها من جديد 
  •  بعدها أستخدمت عبارة الشرط While و كان معنى الشرط هو إذا كان الجدول ليس في نهايته دعوني أصيغها بطريقة أخرى في البداية أستخدمت الكود First ‘لى الجدول لنقله للسجل الأول و بعدها قلت له بينما الجدول ليس في نهايته قم بالتالي ... و بعدها يقوم بعملية الحساب حيث ان قيمة النتيجة هي قيمتها الحالية + قيمة الحقل ثم نقول له انتقل للسجل الاخر و يكرر نفس العملية إلى أن يصل إلى نهاية الجدول EOF و هذا ببساطة كل ما في الأمر دالة بسيطة جدا و مع نتائج رائعة
في الأخير أتمنى أن يكون درس اليوم قد أعجبكم و السلام عليكم

هناك 5 تعليقات

  1. اشكرك اخي الكريم على هذه المعلومات القيمة وانا تقريبا لديا نفس المشكلة لكن مع اختلاف بسيط

    ردحذف
  2. شكرا

    ردحذف

جميع الحقوق محفوظة لــ تعلم دلفي بالعربية 2015 ©