3.1محرر الصيغ (بنية Crystal/Basic)
الأساسي في 30 ثانية
- الصيغة = قيمة ناقصة : شامل الرسم، الهامش، الاسم الكامل، صنف محسوب — تُنشأ في محرر الصيغ، وتظهر كحقل يوضع في أي مقطع.
- بنيتان وخيار واحد : Crystal (التاريخية، الأكثر توثيقا) أو Basic (القريبة من VB) — نفس النتيجة، لكن واحدة فقط لكل تقرير للبقاء متسقا.
- تحقق وحدد النوع وحوّل : راقب دائما البنية قبل الاستعمال والنوع المرجَع (ToText، ToNumber) — خلط النص والرقم دون تحويل يُفشل الصيغة.
mini-cas filé — فارس يحسب شامل الرسم دون جدول
فارس، مراقب التسيير في الجزائر، يعيد كل شهر إدخال مبالغ شامل الرسم لفواتيره في جدول بجانب تقرير Crystal — مصدر أخطاء وضياع وقت. يفتح محرر الصيغ، ويدرج الحقل من القائمة ويكتب {Commandes.MontantHT} * 1.19 (الرسم الجزائري) : يظهر الحقل المحسوب في المستكشف، فيضعه في مقطع التفاصيل، ويتحقق من البنية، فيُحسب شامل الرسم تلقائيا عند كل تحديث. انتهت الإدخالية المزدوجة : التقرير نفسه ينتج قيمته الناقصة.
الحالة نفسها تعود في الدرس، والرسم، والنص الجاهز وتحدّي 48 ساعة.
1. محرر الصيغ : الحقول والعوامل والدوال
الـ صيغة حساب أو منطق تُنشئه أنت لإنتاج قيمة غير موجودة كما هي في القاعدة : مبلغ شامل الرسم، هامش، اسم كامل، صنف. تُنشأ في محرر الصيغ (Formula Workshop) ؛ فيظهر حقل الصيغة في المستكشف ويوضع في مقطع كأي حقل. المحرر يساعد : قائمة الحقول للإدراج (تُكتب {table.champ})، وقائمة الدوال حسب الصنف (رياضيات، سلاسل، تواريخ، شروط) والعوامل. فارس يلتقط منها بدل كتابة كل شيء يدويا — أخطاء إملائية أقل في أسماء الحقول.
لَبِنات الصيغة : مراجع الحقول بين قوسين معقوفين ({Commandes.MontantHT})، والعوامل (الحسابية + - * /، المقارنة = <> > < >= <=، المنطقية And Or Not، الربط + أو &)، والدوال المدمجة (Round، UpperCase، Year، If…Then…Else…) والثوابت (أرقام مثل 1.19، نص بين علامتي تنصيص، تواريخ بين # مثل #2026-01-01#). مثال : شامل الرسم = {Commandes.MontantHT} * 1.19 ؛ وتسمية = {Client.Nom} + " " + {Client.Prenom}.
2. بنيتان وتحقق واحد ونوع واحد
يقترح Crystal Reports بنيتين للاختيار : بنية Crystal (التاريخية، الخاصة بالأداة، الأكثر انتشارا في التوثيق — قيمة الصيغة هي آخر تعبير يُقيَّم) وبنية Basic (القريبة من Visual Basic، نُسند النتيجة إلى « formula = … »). وهما تفعلان الشيء نفسه : افتراضيا، بنية Crystal، لأن عليها أمثلة أكثر وتُقرأ بها تقارير الآخرين بسهولة أكبر. ونلتزم بها في كامل التقرير.
منعكسان قبل استعمال أي صيغة. أولا التحقق من البنية (زر المراقبة) : المحرر يُنبه إلى الأقواس الناقصة والأخطاء. ثم مراقبة النوع : الصيغة ترجع نوعا دقيقا (رقم، نص، تاريخ، منطقي) ؛ وخلط النص والرقم دون تحويل يسبب أخطاء — نحوّل بـ ToText وToNumber. ويمكن بعدها عرض الصيغة، وجمعها، واستعمالها في مرشح أو تنسيق — والصيغ تتركب فيما بينها.
🔎 مثال ملموس — شامل الرسم والاسم الكامل، أول صيغتين
فارس يكتب صيغتيه الأساسيتين ببنية Crystal.
شامل الرسم (رقم) : {Commandes.MontantHT} * 1.19
الاسم الكامل (نص) : {Client.Nom} + " " + {Client.Prenom}
→ تحقق من البنية بالزر، وضع كل حقل في المقطع المطلوب.
القراءة : حساب واحد وربط واحد يغطيان أصلا جوهر الحاجات الجارية.
الدرس : إدراج الحقول من القائمة يجنّب أخطاء الكتابة.
مفردات القسم
- الصيغة
- حساب أو منطق ينشئه المستعمل لإنتاج قيمة غائبة عن القاعدة (شامل الرسم، الهامش، الاسم + اللقب، صنف). تُنشأ في المحرر وتوضع كحقل.
مثال بسيط: شامل الرسم عند فارس : {Commandes.MontantHT} * 1.19.
ما ليس كذلك: إعادة إدخال شامل الرسم يدويا في جدول بجانبه.
رد فعل: كلما نقصت قيمة، اصنعها بصيغة.
- محرر الصيغ (Formula Workshop)
- ورشة كتابة الصيغ : قوائم الحقول ({table.champ}) والدوال حسب الصنف والعوامل، مع التحقق من البنية.
مثال بسيط: فارس يدرج {Client.Nom} من القائمة.
ما ليس كذلك: كتابة أسماء الحقول يدويا، مصدر أخطاء.
رد فعل: أدرج دائما من القوائم المقترحة.
- بنية Crystal مقابل Basic
- لغتان للاختيار لنفس الصيغة : Crystal (التاريخية، الأكثر انتشارا) وBasic (القريبة من Visual Basic، « formula = … »).
مثال بسيط: فارس يكتب كل شيء بـ Crystal ليبقى متسقا.
ما ليس كذلك: خلط البنيتين في نفس التقرير.
رد فعل: Crystal افتراضيا، وبنية واحدة لكل تقرير.
- لَبِنات الصيغة
- مراجع الحقول ({table.champ})، والعوامل (الحسابية، المقارنة، And/Or/Not، الربط)، والدوال المدمجة، والثوابت (أرقام، « نص »، #تواريخ#).
مثال بسيط: {Client.Nom} + " " + {Client.Prenom}.
ما ليس كذلك: حساب منسوخ يدويا خارج التقرير.
رد فعل: ركّب لَبِنة لَبِنة، ثم تحقق.
- نوع الصيغة
- الصيغة ترجع نوعا دقيقا (رقم، نص، تاريخ، منطقي) ؛ وخلط الأنواع دون تحويل يسبب أخطاء.
مثال بسيط: ToText({Commandes.Montant}) لعرض رقم في تسمية.
ما ليس كذلك: جمع نص ورقم على أمل أن « يمر ».
رد فعل: حوّل صراحة بـ ToText وToNumber.
في التطبيق — كتابة صيغة أولى
- افتح محرر الصيغ وأنشئ حسابا بسيطا (مثلا شامل الرسم = {MontantHT} * 1.19) بإدراج الحقل من القائمة.
- جرّب ربط نص (مثلا {Client.Nom} + " " + {Client.Prenom}) وتصفح الدوال حسب الصنف (رياضيات، نص، تواريخ).
- تحقق من البنية (زر المراقبة) : صحح الأخطاء المُشار إليها قبل استعمال الصيغة.
- ضع حقل الصيغة (صار في المستكشف) في مقطع كحقل عادي ؛ وراقب النوع (حوّل بـ ToText/ToNumber عند الحاجة).
نص جاهز للقول — اشرح صيغتك لرئيس المحاسبة (30 ثانية)
«شامل الرسم لم يعد يُعاد إدخاله : أنشأت حقلا محسوبا — مبلغ غير شامل الرسم مضروبا في 1.19 — داخل التقرير مباشرة، ببنية Crystal، وتحققت منه الأداة. يُعاد حسابه تلقائيا عند كل تحديث، دون إدخالية مزدوجة ولا خطأ نسخ.»
يُقال في اجتماع الإقفال ؛ اعرض الصيغة وزر التحقق.
نموذج جاهز للنسخ — الصيغ الأولى (بنية Crystal)
// شامل الرسم (رقم)
{Commandes.MontantHT} * 1.19
// الاسم الكامل (نص)
{Client.Nom} + " " + {Client.Prenom}
// الهامش (رقم)
{Ventes.PrixVente} - {Ventes.Cout}
// ما يعادلها بـ Basic : formula = {Commandes.MontantHT} * 1.19
مستقل
صيغتان (حساب واحد وربط واحد) تؤتمتان ما كنت تعيد إدخاله يدويا.
شركة صغيرة في الجزائر
فارس يحسب شامل الرسم بـ 19 % في التقرير : انتهى الجدول الموازي.
فريق مشروع
افرض بنية Crystal الوحيدة في التقرير ليقرأ كل واحد صيغ الآخرين.
مبتدئ
هذا الأسبوع : صيغة حساب + صيغة نص، ببنية مُتحقق منها بالزر.
✓ ممارسات جيدة
- أدرج الحقول من قائمة المحرر بدل كتابتها (صفر خطأ كتابة).
- اختر بنية Crystal افتراضيا والتزم بها في كامل التقرير.
- تحقق دوما من البنية قبل استعمال أي صيغة، وراقب نوعها.
✗ أخطاء شائعة
- خلط بنيتي Crystal وBasic في نفس التقرير : لن يفهم أحد شيئا.
- كتابة أسماء الحقول يدويا بدل إدراجها (أخطاء خفية).
- جمع نص ورقم دون تحويل : تفشل الصيغة بدل « تدبير الأمر ».
النقاط الأساسية
- الصيغة تنتج قيمة غائبة عن القاعدة (شامل الرسم، الهامش، الاسم + اللقب، صنف) ؛ تُنشأ في المحرر وتوضع كحقل.
- بنيتان (Crystal الأكثر انتشارا / Basic القريبة من VB) : الالتزام بواحدة فقط للاتساق.
- اللَبِنات : الحقول {table.champ} والعوامل والدوال حسب الصنف والثوابت (أرقام، « نص »، #تواريخ#).
- تحقق دائما من البنية وراقب النوع (ToText وToNumber للتحويل).
تحدّي 48 ساعة — طبّق غدا
أنشئ صيغة حساب واحدة (شامل الرسم أو الهامش) + صيغة نص واحدة (الاسم الكامل)، ببنية مُتحقق منها، موضوعتين في تقريرك الحقيقي.
- أنشئ حقلا محسوبا بدل إعادة الإدخال يدويا.
- أكتب ببنية واحدة (Crystal افتراضيا).
- أتحقق من البنية وأحوّل الأنواع صراحة.
أسئلة شائعة
بنية Crystal أم Basic : أيهما تختار، وكيف تبدأ ؟
البنيتان تنتجان نفس النتيجة ؛ والاختيار مسألة اتساق وألفة. بنية Crystal هي اللغة التاريخية الخاصة بـ Crystal Reports — الأكثر انتشارا : أغلبية التوثيق والتقارير الموجودة تستعملها، وقيمة الصيغة هي آخر تعبير يُقيَّم. وبنية Basic قريبة من Visual Basic (« formula = … »)، وألف إن كنت تعرف VB/VBA. افتراضيا، اختر Crystal (أمثلة أكثر، وقراءة تقارير الآخرين) وابق متسقا في كامل التقرير. وللبدء : ابدأ بسيطا (حساب، وربط)، وأدرج الحقول من القائمة، وتصفح الدوال حسب الصنف، وتحقق من البنية دوما — فالمحرر يُنبه إلى الأقواس الناقصة والأخطاء.
ما فائدة الصيغ عمليا، وما الحسابات الجارية التي تُنجز بها ؟
الصيغ تنتج قيما ومنطقا غائبين عن القاعدة، وتتدخل في كل مكان : حساب قيم مشتقة (شامل الرسم = غير شامل الرسم × النسبة، الهامش = البيع − التكلفة، الخصم، الكمية × السعر، النسبة) ؛ وتركيب نص (الاسم + اللقب، العنوان في سطر، «فاتورة رقم» + الرقم) ؛ والتصنيف بـ If…Then…Else (3-4) للتجميع بعده (3-5) ؛ وتغذية المرشحات (مع الانتباه لجهة الخادم، 2-3) ؛ وقيادة التنسيق الشرطي (3-2) وإخفاء المقاطع (2-5) ؛ ومعالجة التواريخ (السنة، الشهر، الفوارق) ؛ وتدبير القيم الفارغة. وحسابات التسيير النموذجية عند فارس : شامل الرسم بـ 19 %، والهامش لكل سطر (البيع − التكلفة)، ومجموع السطر (الكمية × سعر الوحدة)، والحصة بـ % (الجزء / المجموع × 100).
أين تُنشأ قيمة محسوبة (شامل الرسم، الهامش) في Crystal Reports ؟