2.3 · تحديد السجلات (الترشيح)

المستوى 2 · متوسط: الفرز والتجميع والتحديد

2.3تحديد السجلات (الترشيح)

الهدف: الترشيح عبر Select Expert ودفع المرشح جهة الخادم للأداء.
الوقت المقدّر: 10 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • Select Expert = حقل + عامل + قيمة: يساوي، أكبر من، بين، يحتوي، ضمن قائمة — تُجمَع بـ ET/OU.
  • الترشيح يغير المجاميع أيضاً: وحده السجلات المحتفظ بها تُحتسَب — النطاق يحدد الرقم.
  • الخادم أولاً: شروط بسيطة على حقول القاعدة ← WHERE مدفوع للقاعدة — تحقق عبر Show SQL Query.

حالة مستمرة — فارس والتقرير الذي خلط سنتين

تقرير فارس يجمع كل الأرشيف: تريد الإدارة السنة الجارية، والمنطقة الشمالية، ومبالغ معتبرة. يفتح فارس Select Expert: تاريخ الطلب بين 01/01 و31/12 ET المنطقة = الشمالية. تتغير المجاميع فوراً — طبيعي: المرشح يقلص أيضاً نطاق الملخصات. ثم يتحقق عبر Show SQL Query: الشرط يظهر في WHERE، فالقاعدة لا ترجع إلا المفيد. ويتجنب الفخ العكسي: الترشيح على صيغة معقدة كان سيستقدم كل الجدول قبل الفرز محلياً. في 2.4 سيستقبل هذا التحديد معامل سنة يُختار عند التنفيذ؛ وفي 2.5 ستستعيد نسخة الملخص هذا النطاق المرشح.

تتمة الخيط 2.2: مجاميع فارس تنتقل إلى نطاق مرشح — وتستمر في 2.4 و2.5.

1. الترشيح مع Select Expert

نادراً ما يعرض التقرير كل البيانات: التحديد (Selection) لتحديد السجلات يرشح. مساعد التحديد (Select Expert): نختار حقلاً وعاملاً (يساوي، أكبر من، بين، يحتوي، ضمن قائمة…) وقيمة. نجمع عدة شروط (ET/OU). وحده السجلات المحتفظ بها تظهر وتُحتسَب في المجاميع — الترشيح يغير النتائج. تحت الغطاء، يصبح التحديد صيغة تحديد (Record Selection Formula)، قابلة للتحرير، وتُحوَّل مثالياً إلى عبارة WHERE تُرسَل إلى القاعدة. يرشح فارس: السنة الجارية ET المنطقة الشمالية.

2. جهة الخادم مقابل جهة العميل (الأداء)

نقطة حاسمة للأداء: الترشيح جهة الخادم (القاعدة لا ترجع إلا المرشح — سريع وخفيف) مقابل الترشيح جهة العميل (يستقدم Crystal كل الأسطر ثم يرشح محلياً — بطيء وثقيل على الأحجام الكبيرة). بعض الشروط — صيغ Crystal المعقدة، دوال غير قابلة للترجمة إلى SQL — لا يمكن دفعها إلى القاعدة وتفرض الترشيح المحلي. القاعدة: مرشحات بسيطة ومباشرة على حقول القاعدة تبقى جهة الخادم. يصوغ فارس شروطه على حقلي التاريخ والمنطقة، لا على حسابات، ليحافظ على WHERE فعال.

3. المنطق والتفاعلية

انتبه لـ منطق الشروط المركبة: ET يضيّق (كلاهما معاً ← نتائج أقل)، وOU يوسّع (أحدهما أو الآخر ← نتائج أكثر)، والأقواس مهمة متى خلطنا. لعدة قيم في نفس الحقل، فضّل « ضمن القائمة ». نتحقق من SQL المولد (« Show SQL Query ») للتأكد أن المرشح مدفوع إلى القاعدة. ولمرشح يختاره المستخدم عند التنفيذ (« أي سنة؟ »)، نستخدم المعاملات (القسم 2.4) مع التحديد — سيأتي فارس إليها ليتوقف عن تعديل التقرير كل سنة.

خطأ شائع في الفهم: « الترشيح لا يغير إلا العرض، لا المجاميع ». خطأ: تحديد السجلات يستبعد الأسطر من التقرير ومن الملخصات — المجموع المرشح لم يعد المجموع الشامل. قاعدة فارس: بعد كل مرشح، أعد قراءة المجاميع كأرقام بنطاق (سنة + منطقة)، وتحقق من WHERE للحفاظ على أداء جهة الخادم.
الترشيح: أين يُنفَّذ المرشح؟ جهة الخادم للأداء Select Expert حقل + عامل+ قيمة (ET/OU)جهة الخادم القاعدة ترشحعبر WHERE (سريع)جهة العميل استقدام الكلثم الترشيح (بطيء)
جهة الخادم للأداء
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) يرشح فارس: Select Expert — التاريخ بين 01/01 و31/12 ET المنطقة = الشمالية؛ وحده هذه السجلات تظهر وتُحتسَب في المجاميع. 2) يدفع: شروط بسيطة على حقول القاعدة، متحقق منها في WHERE عبر Show SQL Query — القاعدة لا ترجع إلا المفيد. 3) يعتني بالمنطق: ET للتضييق، وOU للتوسيع، وأقواس صريحة و« ضمن القائمة » للقيم البديلة. الدرس: مرشح دقيق بنطاق صريح، منفذ جهة الخادم.

🔎 مثال ملموس — 🔎 مثال عملي — مرشح مدفوع إلى القاعدة

تقرير فارس، مرشح على السنة والمنطقة، مع ضبط الخادم:

{Commandes.DateCommande} in Date(2026, 1, 1) to Date(2026, 12, 31)
and {Clients.Region} = "Nord"

Show SQL Query ← يظهر الشرط في WHERE: ترشيح جهة الخادم، سريع.

القراءة: صيغة تحديد بسيطة على حقول القاعدة، مترجمة إلى WHERE.

الدرس: تجنب الصيغ المعقدة في المرشح لعدم السقوط جهة العميل.

مفردات القسم

تحديد السجلات
الاحتفاظ وحده بالسجلات المحققة لشرط (سنة، منطقة، عتبة) عبر Select Expert؛ يرشح العرض والمجاميع.

مثال بسيط: يحتفظ فارس وحده بطلبات 2026 للمنطقة الشمالية.

ما ليس كذلك: فرز يرتب دون استبعاد.

رد فعل: النطاق المطلوب = تحديد صريح.

Select Expert
أداة الترشيح: حقل + عامل (يساوي، بين، يحتوي، ضمن قائمة…) + قيمة، مع الجمع بـ ET/OU.

مثال بسيط: يجمع فارس التاريخ بين حدين ET المنطقة تساوي الشمالية.

ما ليس كذلك: محرر صيغ الحساب (المستوى 3).

رد فعل: الترشيح = حقل + عامل + قيمة.

صيغة التحديد
ترجمة المرشح إلى صيغة (Record Selection Formula)، قابلة للتحرير، وتُحوَّل مثالياً إلى عبارة WHERE في SQL.

مثال بسيط: يصبح تحديد فارس صيغة على التاريخ والمنطقة، ظاهرة في Show SQL Query.

ما ليس كذلك: صيغة حساب معروضة في قسم.

رد فعل: المرشح = صيغة تُتحقَّق في SQL.

جهة الخادم / جهة العميل
الخادم: القاعدة ترشح عبر WHERE (سريع)؛ والعميل: يستقدم Crystal الكل ثم يرشح محلياً (بطيء على الأحجام الكبيرة).

مثال بسيط: مرشح فارس البسيط يبقى في الخادم؛ وصيغة معقدة كانت ستحوله إلى المحلي.

ما ليس كذلك: طريقتان متكافئتان دون أثر على الأداء.

رد فعل: بسيط على حقل قاعدة = الخادم.

في التطبيق — عملياً — ترشيح السجلات

  1. افتح Select Expert: حقل + عامل (يساوي، بين، أكبر من…) + قيمة.
  2. اجمع عدة شروط عند الحاجة (ET/OU) مع العناية بالمنطق (ET يضيق، OU يوسع؛ أقواس).
  3. فضّل شروطاً بسيطة على حقول القاعدة لترشيح جهة الخادم؛ وتجنب الصيغ المعقدة.
  4. تحقق من SQL المولد (« Show SQL Query »)؛ وتأكد أن المجاميع تعكس المرشح.
ترشح السجلات بدقة (ومنها المجاميع)، مع تفضيل جهة الخادم للأداء: يعرض التقرير البيانات الصحيحة، بسرعة.

نص جاهز — تبرير النطاق المرشح (30 ثانية)

« يغطي هذا التقرير السنة الجارية، المنطقة الشمالية: المرشح يستبعد الباقي، فالمجاميع بهذا النطاق — لم تعد شاملة. يُنفَّذ المرشح جهة القاعدة، متحقق منه في SQL: لا نستقدم إلا المفيد، وهو سريع حتى على الأرشيف الكامل. وإذا أردتم سنة أخرى، سنمر عبر معامل. »

يُقال مع عرض صيغة تحديد فارس ثم WHERE في Show SQL Query.

قالب نسخ-لصق — صيغ تحديد صالحة

{Commandes.DateCommande} in Date(2026, 1, 1) to Date(2026, 12, 31)
{Commandes.DateCommande} in Date(2026, 1, 1) to Date(2026, 12, 31) and {Clients.Region} = "Nord"
{Commandes.Montant} > 1000
{Clients.Ville} in ["Alger", "Oran"]

عتبة المبلغ

لا يحتفظ فارس إلا بالطلبات فوق 1000: المرشح يضيق نطاق المجاميع.

ولايتان

الجزائر OU وهران: يستخدم فارس « ضمن القائمة » بدل ET مستحيل على نفس الحقل.

مرشح بطيء

مرشح على صيغة معقدة: يُستقدَم الكل ثم يُفرَز محلياً — يعود فارس إلى حقول القاعدة.

أقواس منسية

« A ET B OU C » غامض: يجمّع فارس صراحة « (A OU B) ET C » للنتيجة المطلوبة.

✓ ممارسات جيدة

  • صغ شروطاً بسيطة على حقول القاعدة (جهة الخادم).
  • لعدة قيم في نفس الحقل، استخدم « ضمن القائمة ».
  • تحقق من WHERE المولد لتأكيد الترشيح جهة الخادم.

✗ أخطاء شائعة

  • الترشيح على صيغة معقدة: يفرض الترشيح المحلي (بطيء).
  • الخلط بين ET وOU (« المدينة = الجزائر ET المدينة = وهران » لا يرجع شيئاً).
  • خلط ET وOU دون أقواس (نتيجة غامضة).

النقاط الأساسية

  • يرشح Select Expert الأسطر (حقل + عامل + قيمة)، قابلة للجمع (ET/OU). يرشح العرض والمجاميع.
  • حاسم: الترشيح جهة الخادم (مدفوع إلى القاعدة، سريع) مقابل جهة العميل (استقدام الكل ثم الترشيح، بطيء).
  • شروط بسيطة على حقول القاعدة = جهة الخادم؛ والصيغ المعقدة تفرض المحلي. تحقق عبر « Show SQL Query ».
  • انتبه للمنطق (ET يضيق، OU يوسع؛ أقواس). ولمرشح يُختار عند التنفيذ، استخدم المعاملات (2-4).

تحدي 48 ساعة — طبّق غداً

على تقريرك الحقيقي: ضع مرشحاً بشرطين (فترة ET فئة)، وتحقق من WHERE في Show SQL Query، وجرّب « ضمن القائمة »، ثم أعد قراءة مجاميعك بالنطاق الجديد.

قائمة الخروج من القسم
  • أستطيع الترشيح (حقل + عامل + قيمة، ET/OU) عبر Select Expert.
  • أعرف إبقاء المرشح جهة الخادم (شروط بسيطة، WHERE متحقق منه).
  • أعيد قراءة مجاميعي بالنطاق المرشح.
تقييم ذاتي 1-5: هل مرشحي مدفوع إلى القاعدة؟هل منطق ET/OU يعطي النطاق المطلوب؟

أسئلة شائعة

لماذا الترشيح جهة الخادم، وكيف أتأكد منه؟

جهة الخادم، يُترجَم الشرط إلى WHERE في SQL وتنفذه القاعدة، فلا ترجع إلا السجلات المفيدة: سريع وخفيف. وجهة العميل، يستقدم Crystal كل الأسطر ثم يرشح محلياً — كارثي على الأحجام الكبيرة (وقت، ذاكرة، شبكة). ما يمنع جهة الخادم: مرشحات على صيغ Crystal المعقدة أو دوال غير قابلة للترجمة. لضمان جهة الخادم: صغ شروطاً بسيطة ومباشرة على حقول القاعدة (التاريخ بين X وY، المنطقة = « الشمالية »)، وتجنب الترشيح على حقول الصيغ، وتحقق عبر « Show SQL Query » — إذا كان شرطك في WHERE فهو مدفوع إلى القاعدة. إنه رافعة أداء كبرى.

كيف أجمع ET وOU دون خطأ؟

ET يضيق (كل الشروط مطلوبة ← نتائج أقل)؛ وOU يوسع (واحد على الأقل ← نتائج أكثر). الفخاخ: (1) الخلط بين ET وOU — « المدينة = الجزائر ET المدينة = وهران » لا يرجع شيئاً (المدينة لا يمكن أن تكون الاثنتين)؛ كان يلزم OU، أو أفضل « ضمن القائمة [Alger, Oran] »؛ (2) خلط ET وOU دون أقواس (« A ET B OU C » غامض). فكر بلغة واضحة، وجمّع بأقواس صريحة « (المنطقة = الشمالية OU المنطقة = الجنوبية) ET المبلغ > 1000 »، وفضّل « ضمن القائمة » للقيم البديلة، واختبر عدد النتائج.

تحقّق من فهمك

أي ترشيح نفضل للأداء؟

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

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