السلام عليكم و مرحبا بكم في درس جديد . هذا الدرس و هو عبارة عن مقال كتابي سنقوم فيه بشرح دالة تقوم بحساب مجموع حقل ما من جدول و في البداية دعوني أشير إلى بعض النقاط المتعلقة بهذا الدرس أو هذا الكود عموما :
- هذه الطريقة لا تعتبر الأفضل في الحساب
- هذه الطريقة تكون بطئية في حالة عدد كبير من السجلات
- توجد عدة طرق أخرى للحساب مثل استعمال إستعلامات 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 و هذا ببساطة كل ما في الأمر دالة بسيطة جدا و مع نتائج رائعة
في الأخير أتمنى أن يكون درس اليوم قد أعجبكم و السلام عليكم