تكملة دروس دورة ربط sql server مع Visual studio بالتفصيل , في الدروس السابقة خلصنه من برمجة الشاشة الاولى Form1 الخاصه بادخال بيانات الطالب التي تحتوي على ازرار الاضافة ، الحفظ ، التعديل ، البحث ، وكذلك خانات Textbox التي من خلالها يتم كتابه البيانات وغيرنه اشياء بسيطه في خصائص DataGridView برمجيا .
نكمل وياكم برمجه الشاشة الثانية Form2 الخاصة بادخال درجات الطالب ، طبعا فكره ربط هاي الشاشة مع شاشة الاولى هي عندما يقوم المستخدم بادخال بيانات الطالب في الشاشة الاولى و يحفظها سوف يتم ظهور اسم طالب في الشاشة الثانيه مباشره ،،
بمعنى اخر يتم الاستعلام عن اسم طالب الموجود في الشاشه الاولى الى الشاشة الثانيه من خلال ComboBox1 ونكتب درجات طالب من خلال خانات Textbox وبنفس الوقت كدرون تستعلمون عن اي حقل في الجدول مو فقط الاسم وحسب ماتردون لكن انه استعلم عن اسم طالب باعتبار بيانات الطالب محفوظه في الشاشه الاولى ونحتاج فقط اسمه يظهرنه في شاشه ثانيه حتى ندخل درجات مواده الدراسية .
وان شاء الله تفهوم اكثر من نكتب الاكواد واشرحها ونفذ البرنامج .
تحتوي الشاشة على 10 خانات Textbox الخاصه بادخال عشره مواد وانتم حسب مايعجبكم كدرون تخلون 8 او 6 تخص مواد مو شرط حسب ما انه مخلي عمل الشاشة بعد تنفيذ البرنامج عندما يقوم المستخدم بتنفيذ البرنامج والضغط على زر الاضافة فيتم اعطاء رقم تسلسل 1 تلقائيا في خانه ld ( ت طالب)من قبل برنامج وبعدها يختار اسم طالب من comboBox ويدخل درجات المواد الدراسية العشره ، ثم يضغط على زر حساب فيتم حساب التالي : ➖المجموع : مجموع درجات طالب ➖ معدل : تقسيم مجموع على عدد مواد ➖النتيجه : ناجح او راسب ، يعني بعد مانقسم على عدد مواد اذا ظهر معدل 50 سيظهر كلمه ناجح في خانه النتجيه واذا ظهر معدل 49 سيظهر كلمه راسب في خانه النتيجه ➖ التقدير : ويكون حسب معدل طالب كالتالي : اقل من 49 ضعيف اكبر من 50 - 59 مقبول من 60- 69 متوسط من 70- 79 جيد من 80 - 89 جيد جداً من 90 - 100 امتياز كل هذا بضغطه زر وبعدهه يضغط على زر حفظ فيتم حفظ جميع درجات مواد ومجموع ، معدل ، نتيجة ، تقدير ،، في قاعدة البيانات ➖ وايضا تحتوي الشاشه على ازار اخرى مثل زر التعديل في حاله اردنا تعديل درجه محفوظه تم ادخالها بالخطا ، طبعا انه ضفته كدرون انتم ضيفونه او لا شي راجعلكم
نبدا نبرمج تفاصيل الشاشة
اول شي نربط هذه الشاشة بالشاشة الاولى طبعا اذا تذكرون بالشاشة الاولى خلينه زر اسمه الدرجات ومن خلاله يكون الربط ننقر عليه ونكتب الكود التالي ،
Me.hide() Form2.Show
➕وكالعاده ننتقل الى كتابة وبرمجه الاكواد وهي تعريف المتغيرات الخاصة بـ DataTabl لتحميل الجدول الثاني من قاعدة البيانات وكذلك تعريف متغيرات الكائنات SqlDataAdapter ومزودات الاتصال للتعامل مع قواعد البيانات من اضافة ، حفظ ، تعديل ، وغيرها , وايضا نعمل اجراء sub لتحميل جدول واجراء لتحميل اكبر رقم تسلسلي الخاص بالترقيم التلقائي…
طبعا مثل ماتعودنه نكتب جميع هذه الاكواد في module حتى نستدعيهه في اي مكان في المشروع وتخصتر علينه تكرار كتابة الكود اكثر من مره…
وتكون الاكواد في module كالتالي :
Public degreedt As New DataTable Public degreeda As New SqlDataAdapter Public mynewlddegree As Integer '============= Public Sub load_degreedt() degreedt.Clear() degreeda = New SqlDataAdapter("select * from data_subjects", Con) degreeda.Fill(degreedt) End Sub '=============== Public Sub code_degree() Dim dt As New DataTable Dim da As New SqlDataAdapter("select max(id) from data_subjects", Con) da.Fill(dt) If IsDBNull(dt(0)(0)) = True Then mynewlddegree = 1 Else mynewlddegree = dt(0) (0) + 1 End If End Sub
ما يحتاج اشرح الاكواد لان انه شرحتهم بالتفصيل في برمجة الشاشة الاولى وماكو فرق بينهم وانما فقط غرينه الاسماء degreeda ، degreedt واسماء الإجراءات load_degreedt و code_degree…
نعمل استيراد لمكتبه sql للتعامل معها ويكتب فوق public class Form2 وكالتالي :
Imports System.Data.SqlClient Imports System.Data
وايضا نحمل جدول من قاعدة البيانات مثل ماتعلمنه سابقا نكتب كود التالي في حدث Form2_Load
load_degreedt() DataGridView1.DataSource = degreedt
بعدهه نستعلم عن اسماء طلاب المحفوظة في الشاشة الاولى وتظهر الاسماء في comboBox وذلك من خلال حدث فورم ننقر عليهه ونكتب كود في Form_Load كالتالي
load_student() ComboBox1.DataSource = studentdt ComboBox1.DisplayMember = "name" ComboBox1.ValueMember = "id"
شرح الكود
سطر الاول حملنه جدول data_Table من خلال اجراء load_degreedt ، سطر ثاني حملنه بيانات جدول من خلال DataSource سطر ثالثه سوينه استعلام عن اسماء طلاب من خلال الاسم name يعني فقط نريد يظهرنه اسماء طلاب في ComboBox1 ونكون بهاي مرحله خلصنه من تعريف جميع متغيرات والكائنات ومزودات الاتصال الخاصه بالتعامل مع قواعد و حملنه اسماء طلاب في ComboBox1
لاحظ الصور ادناه توضيح للاكواد اعلاه
صورة توضح تعريف متغيرات الخاصه بالكائنات ومزودات الاتصال للتعامل مع قواعد البيانات sql server
صوره توضيح كود الاستعلام عن اسماء طلاب فقط في ComboBox
برمجه تغير اسماء روؤس الاعمدة في DataGridView الى عربي
ومثل ما برمجنه وغيرنه الاسماء في شاشة الاولى هنا نفس الشي فقط غيرنه اسماء حقول في جدول ثاني ايضا في حدث لود فورم Form2_Load نكتب الكود التالي :
DataGridView1.Columns(0).HeaderText = "ت" DataGridView1.Columns(1).HeaderText = "الاسم" DataGridView1.Columns(2).HeaderText = "الاولى" DataGridView1.Columns(3).HeaderText = "الثانيه" DataGridView1.Columns(4).HeaderText = "الثالثة" DataGridView1.Columns(5).HeaderText = "الرابعة" DataGridView1.Columns(6).HeaderText = "الخامسه" DataGridView1.Columns(7).HeaderText = "السادسة" DataGridView1.Columns(8).HeaderText = "السابعة" DataGridView1.Columns(9).HeaderText = "الثامنة" DataGridView1.Columns(10).H aderText = "التاسعة" DataGridView1.Columns(11).HeaderText = "العاشرة" DataGridView1.Columns(12).HeaderText = "المجموع" DataGridView1.Columns(13).HeaderText = "المعدل" DataGridView1.Columns(14).HeaderText = "النتيجة" DataGridView1.Columns(15).HeaderText = "التقدير" End Sub
كود سهل وشرحته سابقا وكلنه هم يكون تسلسل الحقول من 0
انظر الى الصور ادناه للتوضيح اكثر عن الكود
برمجة زر الاضافة والترقيم التلقائي
ايضا نفس كود الاضافة الموجود في الشاشة الاولى فقط نغير اسماء خانات حسب ماموجود عدنه في الشاشة الثانيه ويكون الكود كالآتي :
Public Sub newdegree() code_degree() subject_id.Text = mynewlddegree ComboBox1.Text = "" subject_first.Text = "" subject_the_second.Text = "" subject_the_third.Text = "" subject_the_fourth.Text = "" subject_the_fifth.Text = "" subject_sixth.Text = "" subject_seventh.Text = "" subject_eighth.Text = "" subject_ninth.Text = "" subject_tenth.Text = "" total.Text = "" the_average.Text = "" the_result.Text = "" appreciaion.Text = "" End Sub
كود تم شرحه سابقا وفقط غيرنه اسماء خانات Textbox برمجيا بما يقابلها من معنى في جميع Label الموضحة لديكم في تصميم الشاشة
لا ننسى ننقر على زر الاضافة ونستعدي الاجراء كالتالي
Newdegree()
شاهد الصور ادناه للتوضيح اكثر للكود
🌇 صوره توضيح كود تغير روؤس الاعمده في DataGridView الى عربي
صوره توضيح لكود الاضافة والترقيم التلقائي
فيديو توضيح عند تنفيذ البرنامج وتوضيح الشاشة الثانيه الخاصه بادخال درجات المواد الدراسية للطالب سترون كيف تم تحميل اسماء الطلاب في ComboBox بعد الاستعلام من الشاشة الاولى عن طريق شرط تحميل الاسم name
برمجة كود عرض جميع البيانات على Textbox (الخانات)
كالعادة كما برمجنا كود في الشاشة الاولى نكتب الكود التالي في حدث SelectionContext الخاص باداه DataGridView
Try Dim pos As Integer = BindingContext(studentdt).Position() ComboBox1.Text = degreedt.Rows(pos).Item("name") subject_first.Text = degreedt.Rows(pos).Item("first") subject_the_second.Text = degreedt.Rows(pos).Item("the_second") subject_the_third.Text = degreedt.Rows(pos).Item("the_third") subject_the_fourth.Text = degreedt.Rows(pos).Item("the_fourth") subject_the_fifth.Text = degreedt.Rows(pos).Item("the_fifth") subject_sixth.Text = degreedt.Rows(pos).Item("sixth") subject_seventh.Text = degreedt.Rows(pos).Item("seventh") subject_eighth.Text = degreedt.Rows(pos).Item("eighth") subject_ninth.Text = degreedt.Rows(pos).Item("ninth") subject_tenth.Text = degreedt.Rows(pos).Item("tenth") total.Text = degreedt.Rows(pos).Item("total") the_average.Text = degreedt.Rows(pos).Item("the_average") the_result.Text = degreedt.Rows(pos).Item("the_result") appreciaion.Text = degreedt.Rows(pos).Item("appreciaion") Catch ex As Exception End Try
برمجة كود تنظيف خانات Textbox من البيانات
ننشى اجراء باسم ننقر على زر ونكتب الكود التالي :
Public Sub Cleaning() subject_first.Text = "" subject_the_second.Text = "" subject_the_third.Text = "" subject_the_fourth.Text = "" subject_the_fifth.Text = "" subject_sixth.Text = "" subject_seventh.Text = "" subject_eighth.Text = "" subject_ninth.Text = "" subject_tenth.Text = "" total.Text = "" the_average.Text = "" the_result.Text = "" appreciaion.Text = "" End Sub
كود بسيط نستدعي هذا الاجراء في زر تنظيف البيانات من خلال كتابه Cleaning .
برمجة كود التعديل وفائدته عند ادخال درجه معينه بالخطا نحتاج الى تعديل هذه الدرجه لذلك ننقر على زر التعديل ونكتب الكود التالي :
Dim pos As Integer = BindingContext(degreedt).Position() degreedt.Rows(pos).Item("first") = subject_first.Text degreedt.Rows(pos).Item("the_second") = subject_first.Text degreedt.Rows(pos).Item("the_third") = subject_first.Text degreedt.Rows(pos).Item("the_fourth") = subject_first.Text degreedt.Rows(pos).Item("the_fifth") = subject_first.Text degreedt.Rows(pos).Item("sixth") = subject_first.Text degreedt.Rows(pos).Item("seventh") = subject_first.Text degreedt.Rows(pos).Item("eighth") = subject_first.Text degreedt.Rows(pos).Item("ninth") = subject_first.Text Dim save As New SqlCommandBuilder(degreeda) degreeda.Update(degreedt) degreedt.AcceptChanges() MsgBox("تم تعديل البيانات بنجاح") load_degreedt()
الكود تم شرحه سابقا ويكون التعديل فقط للدرجات باعتبار المجموع ومعدل ونتيجه والتقدير هذه لا تحتاج الى تعديل لان مجرد تعديل درجه معينه نحتاج الى حساب من جديد معدل ونتيجه وتقدير ومجموع
انظر ادناه للصور لتوضيح اكثر للاكواد الثلاثه اعلاه
برمجة زر الحفظ
ننقر على زر الحفظ ونكتب الكود التالي :
degreedt.Rows.Add() Dim last As Integer degreedt.Rows.Count - 1 degreedt.Rows(last).Item("id") = subject_id.Text degreedt.Rows(last).Item("name") = ComboBox1.Text degreedt.Rows(last).Item("first") = subject_first.Text degreedt.Rows(last).Item("the_second") = subject_the_second.Text degreedt.Rows(last).Item("the_third") = subject_the_third.Text degreedt.Rows(last).Item("the_fourth") = subject_the_fourth.Text degreedt.Rows(last).Item("the_fifth") = subject_the_fifth.Text degreedt.Rows(last).Item("sixth") = subject_sixth.Text degreedt.Rows(last).Item("seventh") = subject_seventh.Text degreedt.Rows(last).Item("eighth") = subject_eighth.Text degreedt.Rows(last).Item("ninth") = subject_ninth.Text degreedt.Rows(last).Item("tenth") = subject_tenth.Text degreedt.Rows(last).Item("total)= total.Text degreedt.Rows(last).Item("the_average") = the_average.Text degreedt.Rows(last).Item("the_result") = the_result.Text degreedt.Rows(last).Item("appreciaion") = appreciaion.Text Dim save As New SqlCommandBuilder(degreeda) degreeda.Update(degreedt) degreedt.AcceptChanges() MsgBox("تم حفظ البيانات بنجاح") load_degreedt() newdegree() End Sub
الكود شرحته سابقا .
برمجة زر الحذف
ننقر على زر الحذف ونكتب الكود التالي :
If MsgBox(" بيانات هل تريد حذف الطالب", MsgBoxStyle.OkCancel, "تاكيد الحذف") =MsgBoxResult.Ok Then Dim pos As Integer = BindingContext(degreedt).Position() degreedt.Rows(pos).Delete() Dim save As New SqlCommandBuilder(degreeda) degreeda.Update(degreedt) degreedt.AcceptChanges() MsgBox("تم الحذف") load_degreedt() End If End Sub
ايضا تم شرح الكود سابقا
انظر صور ادناه لتوضيح اكثر للكودين اعلاه
صور توضيح برمجه كود الحفظ والحذف
صور توضيح برمجه زر حساب