3.1 · محرر الصيغ (بنية Crystal/Basic)

المستوى 3 · متقدم : الصيغ والتنسيق الشرطي

3.1محرر الصيغ (بنية Crystal/Basic)

الهدف: إنشاء صيغ بسيطة في المحرر (حقول، عوامل، دوال)، مع التحقق من البنية والنوع المرجَع.
الوقت المقدّر: 12 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 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 وBasic قواعد مختلفة ؛ ونوع غير متسق (نص + رقم دون تحويل) يُفشل الصيغة بدل «تدبير الأمر». التحقق من البنية + التحويل الصريح : هو ثمن صيغ تنجح من أول مرة.
صنع قيمة محسوبة الحقول والعوامل والدوال والتحقق اللَبِناتالحقول {table.champ} والعوامل والدوال والثوابت+بنية واحدةCrystal افتراضيا، وBasic إن كانت VB مألوفة+تحقق وحدد النوعمراقبة البنية والنوع المرجَع والتحويلات أدرج الحقول من القائمة بدل كتابتها.
الحقول والعوامل والدوال والتحقق
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) اللَبِنات : فارس يركّب الحقل {Commandes.MontantHT} والعامل * والنسبة 1.19 بدل إعادة إدخال شامل الرسم. 2) البنية : يختار Crystal مرة واحدة للكل، الأكثر توثيقا. 3) المراقبة : يتحقق من البنية بالزر، ويراقب النوع (رقم) ويضع الحقل المحسوب كحقل عادي. الدرس : الصيغة حقل مصنوع — يُتحقق منه ويُحدد نوعه قبل الاستعمال.

🔎 مثال ملموس — شامل الرسم والاسم الكامل، أول صيغتين

فارس يكتب صيغتيه الأساسيتين ببنية 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.

في التطبيق — كتابة صيغة أولى

  1. افتح محرر الصيغ وأنشئ حسابا بسيطا (مثلا شامل الرسم = {MontantHT} * 1.19) بإدراج الحقل من القائمة.
  2. جرّب ربط نص (مثلا {Client.Nom} + " " + {Client.Prenom}) وتصفح الدوال حسب الصنف (رياضيات، نص، تواريخ).
  3. تحقق من البنية (زر المراقبة) : صحح الأخطاء المُشار إليها قبل استعمال الصيغة.
  4. ضع حقل الصيغة (صار في المستكشف) في مقطع كحقل عادي ؛ وراقب النوع (حوّل بـ 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 افتراضيا).
  • أتحقق من البنية وأحوّل الأنواع صراحة.
تقييم ذاتي 1-5 : هل بقيت عندي قيم تُنسخ يدويا خارج التقرير ؟هل اجتازت كل صيغة من صيغي مراقبة البنية ؟

أسئلة شائعة

بنية 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 ؟

موارد إضافية (اختياري، للتعمّق أكثر)

اختبار المستوى 3أسئلة جديدة وأصعب للتحقق من مكتسباتك