منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ترتيب واختيار c#
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

في هذا الفورم عندي معلومات الطالب
اللي هي من جدول الطالب معلوماته العامة
وجدول التخصص وجدول النسب
يعني عندي ثلاثة جداول
اريد عرض معلومات الطالب اولا بصورة عادية وهذا تم ولكن في كود لم استطع تنفيذه
 اللي هو الاختيار من checkbox للترتيب تنازليا حسب معدلات الطلبة للمستوى النهائي  من كل تخصص
بعدها من الاختيار للارقام انه يكون حسب الرقم اللي اختاره يتم وضع الاختيار له
لو مثلا اختار 3  سيكون المختارين  3 من اعلى النسب في كل تخصص
ارجو المساعدة بالكود؟؟
[attachment=12063]
ما هو شكل حاوية البيانات لديك اخي الكريم

بمعنى اخر هل البيانات في Datatable او DataSet او Array

لنقدم لك الحل الافضل بما يتناسب مع مجموعة البيانات
لدي DataTable
وشكرا للمساعدة
أيضا لو امكن تضع مشروع مصغر لما تريد مع قاعدة بياناته
شكرا لك للمساعدة

ولكن لايمكنني تصميم مشروع مصغر لذك مرة اخرى لان الوقت يداهمني وامر بفترة امتحانات

لو تريد التعديل على الفورم سارسله لك مع قاعدة البيانات بسبب التحفظ عليه

 والمعذرة لذلك لانه مشروع تخرج


هذه صورة للجداول المستخدمة للعملية

الفكرة الاولى 

بما ان العمل سيكون على 3 جداول مجتمعة فالافضل حتى لا ندخل في تعقيدات الربط في الاستعلام 
ان تقومي بانشاء View في القاعدة و يضم جميع الحقول التي تحتاجينها من الـ 3 جداول و بعدها يتم تحميل هذا View الى Dataset او DataTable 
و يتم اللعب بالاستعلامات على هذا DataTable باستخدام Ling 
او حتى اذا كنت لا تودين استخدام Ling يمكنك استخدام جمل SQL مباشرة على هذا View بكل بساطة
و جلب البيانات الى DataGridView 
اذا اعجبتك الفكرة قومي بانشاء الـ View مع الاشارة الى معاني الحقول (اقصد كل حقل ماذا يمثل)
و ان شاء الله نتابع بعد ذلك ......
أخشى أن المشروع متشعب جدا لكن لا مانع من المحاولة في الانتظار على قدر الاستطاعة

هذه محاولة على ما فهمت من صورة الجداول
كود :
SELECT TOP (3)
       Student_Table.Student_ID,
       Student_Table.Student_Name,
       Student_Table.Specialization_ID,
       Student_Table.St_Current_Level

FROM   Specialization_Table

       INNER JOIN Student_Table
               ON Specialization_Table.Specialization_ID = Student_Table.Specialization_ID

WHERE  ( Student_Table.St_Current_Level = @level )

ORDER BY Student_Table.Specialization_ID,
         Student_Table.Student_Name

ومعروف أن TOP تأخذ أعلى أسطر وهنا تم تحديد 3 أسطر
و level@ هو بارامتر لتحديد المستوى
يبقى مسألة التنازلي والتصاعدي يكون مع ORDER BY فيكون DESC للتنازلي مثل
ORDER BY student_table.specialization_id DESC
ويمكن التنويع لكل عمود من ترتيب تصاعدي أو تنازلي
مع مراعاة أن الترتيب سيكون بناء على ترتيب اسماء الأعمدة بعد كلمة ORDER BY
(22-10-16, 07:43 PM)ابو ليلى كتب : [ -> ]الفكرة الاولى 

بما ان العمل سيكون على 3 جداول مجتمعة فالافضل حتى لا ندخل في تعقيدات الربط في الاستعلام 
ان تقومي بانشاء View في القاعدة و يضم جميع الحقول التي تحتاجينها من الـ 3 جداول و بعدها يتم تحميل هذا View الى Dataset او DataTable 
و يتم اللعب بالاستعلامات على هذا DataTable باستخدام Ling 
او حتى اذا كنت لا تودين استخدام Ling يمكنك استخدام جمل SQL مباشرة على هذا View بكل بساطة
و جلب البيانات الى DataGridView 
اذا اعجبتك الفكرة قومي بانشاء الـ View مع الاشارة الى معاني الحقول (اقصد كل حقل ماذا يمثل)
و ان شاء الله نتابع بعد ذلك ......


شكرا استاذ
ولكن لم اتعامل مع view ولا اعرف كيفية تطبيقها لذلك سيصعب علي فهم ذلك قليلا
فانا اتعامل مع جمل الاستعلامات sql من خلال كلاس


عملية ظهور البيانات فيdatagridview تمت بالاستعلام

(22-10-16, 10:35 PM)ممدوح كتب : [ -> ]أخشى أن المشروع متشعب جدا لكن لا مانع من المحاولة في الانتظار على قدر الاستطاعة

هذه محاولة على ما فهمت من صورة الجداول
كود :
SELECT TOP (3)
      Student_Table.Student_ID,
      Student_Table.Student_Name,
      Student_Table.Specialization_ID,
      Student_Table.St_Current_Level

FROM   Specialization_Table

      INNER JOIN Student_Table
              ON Specialization_Table.Specialization_ID = Student_Table.Specialization_ID

WHERE  ( Student_Table.St_Current_Level = @level )

ORDER BY Student_Table.Specialization_ID,
        Student_Table.Student_Name

ومعروف أن TOP تأخذ أعلى أسطر وهنا تم تحديد 3 أسطر
و level@ هو بارامتر لتحديد المستوى
يبقى مسألة التنازلي والتصاعدي يكون مع ORDER BY فيكون DESC للتنازلي مثل
ORDER  BY student_table.specialization_id DESC
ويمكن التنويع لكل عمود من ترتيب تصاعدي أو تنازلي
مع مراعاة أن الترتيب سيكون بناء على ترتيب اسماء الأعمدة بعد كلمة ORDER BY

ساحاول تجربة الطريقة وا وافي بالنتيجة
(22-10-16, 10:35 PM)ممدوح كتب : [ -> ]أخشى أن المشروع متشعب جدا لكن لا مانع من المحاولة في الانتظار على قدر الاستطاعة

هذه محاولة على ما فهمت من صورة الجداول
كود :
SELECT TOP (3)
      Student_Table.Student_ID,
      Student_Table.Student_Name,
      Student_Table.Specialization_ID,
      Student_Table.St_Current_Level

FROM   Specialization_Table

      INNER JOIN Student_Table
              ON Specialization_Table.Specialization_ID = Student_Table.Specialization_ID

WHERE  ( Student_Table.St_Current_Level = @level )

ORDER BY Student_Table.Specialization_ID,
        Student_Table.Student_Name

ومعروف أن TOP تأخذ أعلى أسطر وهنا تم تحديد 3 أسطر
و level@ هو بارامتر لتحديد المستوى
يبقى مسألة التنازلي والتصاعدي يكون مع ORDER BY فيكون DESC للتنازلي مثل
ORDER  BY student_table.specialization_id DESC
ويمكن التنويع لكل عمود من ترتيب تصاعدي أو تنازلي
مع مراعاة أن الترتيب سيكون بناء على ترتيب اسماء الأعمدة بعد كلمة ORDER BY
الاخ ممدوح ارى من خلال جملة الاستعلام لديك ان البيانات تم جلبها من جدول الطلاب فقط 
السؤال :لماذا استخدمت Inner Join اذا كانت البيانات كلها من جدول واحد ؟؟
سؤال اخر للاخت ميرا  ما هو الحقل (St_Current_Level) في جدول الطلاب هل هو نفس الحقل (Lvl_Current) من جدول Level
و ارى اننا بحاجة الى بعض التوضيح بخصوص الحقول التي تريدين عرضها في القريد و كذلك من اي جداول

لدي حدس يخبرني بهذا الشكل للاعمدة
PHP كود :
SELECT Specialization_Table.Specialization_Name,Student_Table.Student_IDStudent_Table.Student_NameLevel_Table.Lvl_Current
FROM 
Specialization_Table INNER JOIN  Student_Table ON Specialization_Table.Specialization_ID Student_Table.Specialization_IDINNER JOIN  Level_Table ON Student_Table.Student_ID Level_Table.Student_ID
عشان اوضح الفكرة


عندي في هالفورم اريد عن اختيار علامة الصح في خيار الترتيب التنازلي يتم ترتيب الطلبة لي  حسب معدلاتهم التي في حقل lvl_result  في جدول level  للفصل الدراسي الحالي لهم ويجمعهم حسب قروب من التخصصات
بعدها عبر الخيار للاعداد اتحكم في العدد المطلوب اختياره منهم  اي يتم تمرير متغير بالعدد عشان يرتبهم تنازليا وعلى خسب العدد المطلوب

ليتم تفعيل اختيارهم
هذي هي اظن الفكرة شوي متشعبة