delphi4arab منتديات دلفي للعرب

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

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

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

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

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

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

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

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

راجع المرفق بارك الله فيك.
السلام عليكم
وفيك بارك الله
أولا لا تنسى أن الحقول 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

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

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