3.3المجاميع الجارية (Running Total)
الأساسي في 30 ثانية
- الملخص = مجموع نهائي، والتراكم = مجموع صاعد : الملخص (2-2) يعطي مجموعا واحدا في النهاية ؛ والـ تراكم الجاري يعرض المجموع الوسيط عند كل سطر (رصيد تدريجي، مجموع حتى اليوم).
- الضبط الحاسم هو Reset : أبدا (تراكم شامل لكامل التقرير)، أو لكل مجموعة (ينطلق من الصفر لكل زبون/حساب)، أو على صيغة — وهو يعطي التراكم معناه.
- التراكم تابع للترتيب : فيجمع حسب ترتيب العرض — فرز السطور أولا (حسب التاريخ للكشف)، وإلا فالأرصدة الوسيطة لا معنى لها.
mini-cas filé — فارس يُخرج الكشف التدريجي لكل زبون
فارس، مراقب التسيير في الجزائر، يجب أن يقدم لكل تجاري كشف زبائنه مع الرصيد بعد كل فاتورة — لا المجموع النهائي فقط. ينشئ حقل تراكم (المستكشف → Running Total Fields) : حقل المبلغ جمعا، يُقيَّم عند كل سجل، ويُصفَّر عند كل تغير لمجموعة الزبون، والسطور مفروزة حسب التاريخ. فصار كل سطر يعرض الرصيد المتراكم عند ذلك التاريخ، منطلقا من الصفر لكل زبون. فيتابع التجاريون التطور بدل اكتشاف المجموع في النهاية.
الحالة نفسها تعود في الدرس، والرسم، والنص الجاهز وتحدّي 48 ساعة.
1. التراكم مقابل الملخص : المجموع المتقدم
حاجة لا تغطيها الملخصات الكلاسيكية : الـ تراكم الجاري (Running Total) — جمع (أو عدّ) يتراكم سطرا بسطر، عارضا المجموع «عند هذا السطر». أمثلة : الرصيد التدريجي لكشف حساب (كل سطر يُظهر الرصيد بعد العملية)، والمجموع «حتى اليوم»، وتراكم الترتيب. فحيث يعطي الملخص مجموعا واحدا في نهاية مجموعة أو تقرير، يعطي التراكم المجموع الوسيط عند كل سطر، متقدما.
ويقدم Crystal Reports أداة مخصصة : حقول التراكم (Running Total Fields)، تُنشأ في المستكشف. ونحدد فيها ثلاثة أشياء : (1) الحقل المراكم والعملية (جمع، عدّ…) ؛ (2) شرط التقييم (عند كل سجل، أو بشرط — إضافة سطور معينة فقط) ؛ (3) وبالأخص شرط التصفير (Reset) — متى نعيد التراكم إلى الصفر. ويُعرض التراكم في مقطع التفاصيل (المجموع عند كل سطر) أو في تذييل (التراكم النهائي).
2. التصفير : الضبط الذي يصنع كل شيء
ثلاثة خيارات لـ Reset بثلاث دلالات مختلفة. عدم التصفير أبدا : يجري التراكم على كامل التقرير، من البداية إلى النهاية — مجموع شامل يصعد باستمرار (رصيد عام تدريجي). والتصفير عند كل تغير مجموعة : ينطلق التراكم من الصفر لكل مجموعة — رصيد تدريجي لكل زبون ولكل حساب (حالة فارس). والتصفير على صيغة : شرط مخصص للحالات الخاصة. وضبط التصفير جيدا هو الفرق بين تراكم صحيح ومجموع غير متسق.
وحذران اثنان. أولا ترتيب السطور : فالتراكم يجمع حسب ترتيب العرض — وسطور غير مفروزة (حسب التاريخ للكشف) تعطي أرصدة وسيطة عبثية بينما يبدو المجموع النهائي صحيحا. ثم تكرارات الربط (المستوى 0) : فكما في الملخصات، السطور المضاعَفة تضخّم التراكم — وشروط التقييم غير المناسبة (إضافة كثير من السطور أو قليلها). وعند أي تعارض : تحقق من الترتيب، ثم Reset، ثم شرط التقييم، بهذا الترتيب.
🔎 مثال ملموس — رصيد تدريجي لكل زبون، بضبط كامل
فارس يضبط حقل التراكم للكشوف التجارية.
الحقل : {Factures.Montant} — العملية جمع
التقييم : عند كل سجل
التصفير : عند كل تغير للمجموعة (الزبون)
→ السطور مفروزة حسب التاريخ ؛ والتراكم موضوع في التفاصيل.
القراءة : كل سطر يُظهر الرصيد عند ذلك التاريخ، لكل زبون.
الدرس : نفس التراكم بـ «أبدا» يعطي رصيدا شاملا — حاجة أخرى وتصفير آخر.
مفردات القسم
- التراكم الجاري (Running Total)
- جمع أو عدّ يتراكم سطرا بسطر، عارضا المجموع «عند هذا السطر» (رصيد تدريجي، مجموع حتى اليوم).
مثال بسيط: الرصيد بعد كل فاتورة في كشف فارس.
ما ليس كذلك: ملخص لا يعطي سوى مجموع نهائي.
رد فعل: كلما لزم رؤية التقدم لا النهاية فقط.
- حقل التراكم (Running Total Field)
- كائن مخصص يُنشأ في المستكشف : الحقل المراكم والعملية (جمع، عدّ…) وشرط التقييم والتصفير.
مثال بسيط: حقل جمع {Factures.Montant} عند فارس.
ما ليس كذلك: عدّاد مبرمج يدويا بصيغة.
رد فعل: استعمل الأداة المخصصة بدل الترقيع.
- التصفير (Reset)
- الضبط الحاسم : متى نعيد التراكم إلى الصفر — أبدا (شامل)، أو عند كل تغير مجموعة (لكل زبون/حساب)، أو على صيغة.
مثال بسيط: الانطلاق من الصفر لكل زبون في كشوف فارس.
ما ليس كذلك: تراكم يواصل الصعود من زبون لآخر.
رد فعل: اختر التصفير حسب القصد قبل كل شيء.
- التراكم مقابل الملخص
- الملخص (2-2) يعطي مجموعا في نهاية مجموعة/التقرير ؛ والتراكم يعطي المجموع الوسيط عند كل سطر، متقدما.
مثال بسيط: المجموع النهائي للزبون مقابل الرصيد بعد كل فاتورة.
ما ليس كذلك: ملخص منسوخ في التفاصيل بديلا للتراكم.
رد فعل: التقدم → تراكم ؛ والخلاصة → ملخص.
- التبعية للترتيب
- التراكم يجمع حسب ترتيب العرض : فسطور سيئة الفرز تعطي وسيطات خاطئة (حتى لو كان النهائي صحيحا).
مثال بسيط: الكشف مفروز حسب التاريخ قبل أي تراكم.
ما ليس كذلك: تراكم على سطور بترتيب قاعدة عشوائي.
رد فعل: افرز دوما قبل التراكم.
في التطبيق — إنشاء تراكم جار
- أنشئ حقل تراكم (المستكشف → Running Total Fields → جديد) : الحقل المراكم + عملية الجمع.
- اضبط التصفير حسب الحاجة : أبدا (رصيد شامل) أو عند كل تغير مجموعة (رصيد لكل زبون/حساب).
- ضع التراكم في مقطع التفاصيل وافرز السطور بالترتيب المنتظر (التاريخ، التسلسل).
- تحقق في المعاينة : يتقدم المجموع سطرا بسطر ويُصفَّر (أو لا) كما هو متوقع.
نص جاهز للقول — سلّم الكشوف للتجاريين (30 ثانية)
«صار كل كشف يُظهر الرصيد بعد كل فاتورة، بترتيب التواريخ، وينطلق من الصفر لكل زبون. تتابعون التطور بدل اكتشاف المجموع في النهاية — ويُعاد حساب التراكم تلقائيا عند كل تحديث.»
يُقال عند تسليم الكشوف ؛ اعرض سطرا ورصيده المتراكم.
نموذج جاهز للنسخ — تراكم يدوي بصيغة (بنية Crystal)
// الصيغة @Cumul موضوعة في التفاصيل (عند الحاجة خارج الأداة المخصصة)
WhilePrintingRecords;
NumberVar Cumul;
Cumul := Cumul + {Factures.Montant};
Cumul
// الصيغة @ResetCumul موضوعة في رأس مجموعة الزبون
WhilePrintingRecords;
NumberVar Cumul := 0;
مستقل
حقل تراكم مضبوط التصفير وكشوفك التدريجية تبيع نفسها بنفسها.
شركة صغيرة في الجزائر
فارس يسلّم الكشوف لكل زبون : رصيد عند كل سطر، مفروزة حسب التاريخ.
فريق مشروع
توحيد التصفير لكل مجموعة زبون لجميع الكشوف التجارية.
مبتدئ
هذا الأسبوع : تراكم شامل (أبدا) + تراكم لكل مجموعة، مقارَنان في المعاينة.
✓ ممارسات جيدة
- اختر التصفير قبل إنشاء التراكم : فهو يحدد ما يعنيه الرقم.
- افرز دوما السطور بالترتيب المنتظر قبل التراكم (التاريخ، التسلسل).
- عند أي تعارض، تحقق بالترتيب : الفرز، ثم التصفير، ثم شرط التقييم.
✗ أخطاء شائعة
- نسيان الفرز : وسيطات عبثية مع مجموع نهائي يبدو صحيحا.
- ترك «عدم التصفير أبدا» لحاجة لكل زبون (أو العكس).
- التراكم على سطور مكررة بربط سيئ (مجاميع مضخمة).
النقاط الأساسية
- التراكم يعرض المجموع الوسيط عند كل سطر (رصيد تدريجي) — والملخص لا يعطي سوى مجموع نهائي.
- الأداة المخصصة : حقول التراكم — الحقل والعملية وشرط التقييم وبالأخص التصفير.
- التصفير : أبدا (شامل)، أو لكل مجموعة (ينطلق لكل زبون/حساب)، أو على صيغة — وهو يحدد معنى التراكم.
- التراكم تابع للترتيب : فرز قبلا، وتحقق في المعاينة، وراقب تكرارات الربط.
تحدّي 48 ساعة — طبّق غدا
أنتج كشفا تدريجيا حقيقيا واحدا (تراكم لكل مجموعة، وسطور مفروزة) واعرضه على تجاري للمراقبة سطرا بسطر.
- أميّز التراكم التدريجي عن المجموع النهائي.
- تصفيري موافق للقصد (شامل أو لكل مجموعة).
- سطوري مفروزة وتراكمي مُتحقق منه في المعاينة.
أسئلة شائعة
التراكم أم الملخص : متى تستعمل أحدهما، وكيف تضبط التصفير ؟
الـ ملخص (2-2) يعطي مجموعا واحدا في نهاية مجموعة (مجموع فرعي) أو تقرير (مجموع عام) — فاستعمله لمجموع مجموعة أو شامل. والـ تراكم يعطي المجموع التدريجي عند كل سطر — فاستعمله لرصيد سطر بسطر (كشف)، ومجموع «حتى اليوم»، وتراكم ينطلق لكل صنف. وشرطا التراكم المسبقان : تقرير مُجمَّع إن كان التصفير لكل مجموعة، وسطور مفروزة. والضبط : «عدم التصفير أبدا» = تراكم شامل متواصل ؛ و«عند كل تغير مجموعة» = ينطلق من الصفر لكل مجموعة (رصيد لكل زبون) ؛ و«على صيغة» = شرط مخصص. ويُكمل الأداة خيار «تجميع الباقي / أخرى» والتراكم المشروط (إضافة سطور معينة فقط).
تراكمي يعطي نتائج غير متسقة : ما الأسباب التي أتحقق منها ؟
بالترتيب : (1) ترتيب السطور (السبب رقم 1) — فالتراكم يجمع حسب ترتيب العرض ؛ ودون فرز حسب التاريخ/التسلسل لا معنى للوسيطات بينما قد يكون النهائي صحيحا. والعلاج : الفرز قبلا. (2) التصفير المضبوط خطأ — «أبدا» يواصل الصعود من زبون لآخر، أو تصفير عند المجموعة الخطأ. والعلاج : الضبط حسب القصد. (3) شرط التقييم — «عند كل سجل» افتراضيا ؛ وإن أردت تراكم سطور معينة فقط فيجب أن يطابق الشرط. (4) تكرارات الربط — سطور مضاعَفة = تراكم مضخم، كما في الملخصات. وتحقق من التراكم مقابل قيم معروفة سطرا بسطر، لا من المجموع النهائي فقط.
ما الذي يضبطه تصفير (Reset) التراكم الجاري ؟