الفرز و الإحصاء ( قواعد البيانات )
#1
لدينا جدول بيانات للموظفين (مجموعة كثيرة من الحقول : الكود-الإسم اللقب-تاريخ الميلاد ، تاريخ بداية عقد العمل - الحالة العائلية ... )

- أي شيء من البيانات يمكن فرزه بـ Filter أو استعمال الإستفسار البنيوي حسب الحاجة.

- سؤالي: يريد المستخدم فرز قائمة للموظفين حسب الإختيار ، حيث لديه أكثر من عشرة خيارات يحدد الخيار المراد استغلاله للفرز ، يعني يمكن تحديد خيار واحد مثلا: متزوج أو لا أو تحديد الموظفين الذين تتراوح أعمارهم بين... و بين ... (كل هذا لا صعوبة فيه و بأكثر من طريقة) . لكن كيف يتم تمكين المستخدم من الفرز عندما تكثر الإحتمالات (أكثر من عشرة خيارات).
- متأسف أنا على النت (Cyber) و لا يحضرني مثال مرفق. لكن أضن أن الإشكال واضحا.

بالتوفيق للجميع.
الرد
#2
السلام عليكم
لم تتضح لي الفكرة، كل ما أعرف Filter تقبل أي Expression منطقية (على ألا يكون فيها تناقض)
والأفضل استخدام SQL لمزيد من الخيارات، لا أعرف طريقة أخرى لتصفية البيانات.
الرد
#3
بارك الله فيك أخي على المرور الكريم.
أعددت مثال مرفق لعل الفكرة ستتضح أكثر.

لدينا جدول للموظفين يحتوي على05 حقول _(أمثلة فقط) :
- Code-Nom- DateAssociation-Marie-Service

- الحقل الخاص بالكود (حقل مفتاحي) عبارة عن حقل رقمي يتكون من 08 أرقام ، الأربعة الأولى تمثل سنة الإنضمام في المؤسسة و الباقي لها دلالات أخرى.

1- كيف يتم الفرز الجزئي أثناء إدخال الكود ؟ لو كان الحقل حرفي يمكن ذلك بـ Filter مع إضافة نجمة (*) أو بــ Sql بالتعليمة Like بإضافة % . الآن الحقل رقمي ما هو الحل ؟ رغم أنني اعتمدت حلا ناجحا في المرفق لكن هل من حل أمثل و أبسط ؟

2- يمكن الفرز عن طريق الكود أو التاريخ أو مثلا إذا كان متزوج أو لا ، لكن كل على حدى
الآن لا نعرف حاجة المستخدم ، فأحيانا يحتاج التاريخ فقط و أحيانا يحتاج إدماج الحالة العائلية أو حقول أخرى في الفرز. كيف نقوم بالفرز حسب ما يحدده المستخدم عن طريق CheckBox ؟

راجع المرفق بارك الله فيك.


الملفات المرفقة
.rar   MyData.rar (الحجم : 11.44 ك ب / التحميلات : 138)
الرد
#4
السلام عليكم
وفيك بارك الله
أولا لا تنسى أن الحقول Integer محدودة وهذا العدد 20060007 على الحافة

1-في معظم المحركات هناك دالة SQL تحول العدد الرقمي إلى سلسلة نصية (CONVERT, CAST...)
جرب للفرز هذه العبارة:
كود :
Between (:EdMin * 10000) and (:EdMax + 1) * 10000

2- هناك عدة طرق، شخصيا أفضل هذه (تشبه SQL Injection):
PHP كود :
WHERE (1=:ByCode OR Code BETWEEN 2004 AND 2005) 
استنتج البقية Wink

بالتوفيق.
الرد
#5
بوركت . سأجرب

بالتوفيق للجميع
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم