تكملة طريقة تصميم وبرمجة قاعدة بيانات SQL server و ربطها بالفيجوال بيسك 2

تكملة دروس دورة ربط 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 امتياز كل هذا بضغطه زر وبعدهه يضغط على زر حفظ فيتم حفظ جميع درجات مواد ومجموع ، معدل ، نتيجة ، تقدير ،، في قاعدة البيانات ➖ وايضا تحتوي الشاشه على ازار اخرى مثل زر التعديل في حاله اردنا تعديل درجه محفوظه تم ادخالها بالخطا ، طبعا انه ضفته كدرون انتم ضيفونه او لا شي راجعلكم

 نبدا نبرمج تفاصيل الشاشة 

 اول شي نربط هذه الشاشة بالشاشة الاولى طبعا اذا تذكرون بالشاشة الاولى خلينه زر اسمه الدرجات ومن خلاله يكون الربط ننقر عليه ونكتب الكود التالي ،

.vb.net
  
Me.hide()

Form2.Show

➕وكالعاده ننتقل الى كتابة وبرمجه الاكواد وهي تعريف المتغيرات الخاصة بـ DataTabl لتحميل الجدول الثاني من قاعدة البيانات وكذلك تعريف متغيرات الكائنات SqlDataAdapter ومزودات الاتصال للتعامل مع قواعد البيانات من اضافة ، حفظ ، تعديل ، وغيرها , وايضا نعمل اجراء sub لتحميل جدول واجراء لتحميل اكبر رقم تسلسلي الخاص بالترقيم التلقائي…

 طبعا مثل ماتعودنه نكتب جميع هذه الاكواد في module حتى نستدعيهه في اي مكان في المشروع وتخصتر علينه تكرار كتابة الكود اكثر من مره…

 وتكون الاكواد في module كالتالي :

.vb.net
  

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 وكالتالي :

.vb.net
  
Imports System.Data.SqlClient

Imports System.Data


 وايضا نحمل جدول من قاعدة البيانات مثل ماتعلمنه سابقا نكتب كود التالي في حدث Form2_Load

.vb.net
  
load_degreedt()

DataGridView1.DataSource = degreedt

بعدهه نستعلم عن اسماء طلاب المحفوظة في الشاشة الاولى وتظهر الاسماء في comboBox وذلك من خلال حدث فورم ننقر عليهه ونكتب كود في Form_Load كالتالي

.vb.net
  
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 نكتب الكود التالي :

.vb.net
  

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

  انظر الى الصور ادناه للتوضيح اكثر عن الكود 

  برمجة زر الاضافة والترقيم التلقائي

  ايضا نفس كود الاضافة الموجود في الشاشة الاولى فقط نغير اسماء خانات حسب ماموجود عدنه في الشاشة الثانيه ويكون الكود كالآتي :

.vb.net
  

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 الموضحة لديكم في تصميم الشاشة 

 لا ننسى ننقر على زر الاضافة ونستعدي الاجراء كالتالي

.vb.net
  
Newdegree()

 شاهد الصور ادناه للتوضيح اكثر للكود 

🌇 صوره توضيح كود تغير روؤس الاعمده في DataGridView الى عربي



صوره توضيح لكود الاضافة والترقيم التلقائي


 فيديو توضيح عند تنفيذ البرنامج  وتوضيح الشاشة الثانيه الخاصه بادخال درجات المواد الدراسية للطالب سترون كيف تم تحميل اسماء الطلاب في ComboBox بعد الاستعلام من الشاشة الاولى عن طريق شرط تحميل الاسم name



  برمجة كود عرض جميع البيانات على Textbox (الخانات)

 كالعادة كما برمجنا كود في الشاشة الاولى نكتب الكود التالي في حدث SelectionContext الخاص باداه DataGridView

.vb.net
  
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 من البيانات

  ننشى اجراء باسم ننقر على زر ونكتب الكود التالي :

.vb.net
  

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 .

  برمجة كود التعديل وفائدته عند ادخال درجه معينه بالخطا نحتاج الى تعديل هذه الدرجه لذلك ننقر على زر التعديل ونكتب الكود التالي :

.vb.net
  
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()

 الكود تم شرحه سابقا ويكون التعديل فقط للدرجات باعتبار المجموع ومعدل ونتيجه والتقدير هذه لا تحتاج الى تعديل لان مجرد تعديل درجه معينه نحتاج الى حساب من جديد معدل ونتيجه وتقدير ومجموع 

  انظر ادناه للصور لتوضيح اكثر للاكواد الثلاثه اعلاه 





 برمجة زر الحفظ

 ننقر على زر الحفظ ونكتب الكود التالي :

.vb.net
  
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

 الكود شرحته سابقا .

 برمجة زر الحذف

  ننقر على زر الحذف ونكتب الكود التالي :

.vb.net
  

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

ايضا تم شرح الكود سابقا 

  انظر صور ادناه لتوضيح اكثر للكودين اعلاه

 صور توضيح برمجه كود الحفظ والحذف



 صور توضيح برمجه زر حساب




فيديو توضيح عند تنفيذ البرنامج الخاص بالشاشة الثانيه لادخال درجات المواد الدراسية وسترون كيف حساب المجوع ، المعدل ، النتيجه ، التقدير



الحمد الله دائما وأبدا 

انتهينا  من دورة ربط sql server مع visual studio حول الوضع المنفصل والاتصال  عن طريق DataTable… 

اذا تذكرون طرق الربط للاتصال بـقواعد البيانات وبالخصوص sql شرحتهه سابقا وكلنه هناك عده طرق وكل طريقه لها مميزات وعيوب تختلف عن الاخرى ، وذكرنه هناك طريقتين للربط بين sql server مع visual studio هما : 

الوضع المتصل : ويكون الربط من خلال الاتصال عبر المعالج وذكرنه تفاصيله وعيوبه و مميزاته و ساشرح مشروع بسيط حوله

الوضع المنفصل : ويضمن طريقتين 

 الاتصال من خلال DataTable ومثل ماشفتوا  تفاصيل الدوره والمشروع الي شرحته بالتفصيل… 

 الاتصال من خلال Dataset وهي ستكون دورتنا القادمه  ان شاء الله وستكون مختصره حتى ما اطول عليكم بالشرح 

الغرض من الدوره هو ليس انشاء قاعدة بيانات sql وربطها مع visual studio بنفس تفاصيل مشروع الذي تم شرحه في قناه اي تقليد مشروع كما هو ابدا وانما كان هدف الدوره هو تتعلم كيف تنشئ قاعدة بيانات sql من الصفر بغض النظر عن فكره الجداول والعلاقات التي تحتويها وربطها مع فيجوال بالتصميم الذي تريده

بمعنى اخر تتعلم كيف تكون اي فكره معينه ثم ترسمها على ورقه وترجمهه في sql وربطها مع visual studio ..

بالمناسبه هناك الكثير من المواقع الاجنبيه والعربيه التي ترفع على صفحاتها برامج او مشاريع مفتوحه المصدر لجميع لغات البرمجة بامكانكم تنزيلها وتعديل عليها واضافة حقوقكم عليها لكن ما هي الفائدة ؟

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

طيب لماذا لا تختصر كل هذا تعب وتتعلم اساسيات اي لغه بتعب بسيط ولا اعتقد هناك تعب في اي شي خصوصا اذا كنت تحب المجال وفعلا تريد تتعلم ... 
# وتذكر دائما الحب هو من يولد الابداع 

وللطرفه 
عندما نذهب للمكتبه لشراء كتاب معين ويصادفنا مثلا كتب مكتوب عليها تعلم الانجليزيه خلال يومين او اسبوع🙄 برايكم هل من معقول تعلم اللغة او مجال معين خلال اسبوع او شهر بغض النظر عن سهوله او صعبوبه مجال لكن الاحتراف والابداع يحتاج وقت قد يكون اشهر او سنه وحسب اجتهاد الشخص ، وكلامي هنا نفس الشي بخصوص تعلم البرمجه مثلا نصادف دورات على يوتيوب او كتب الكترونيه او مواقع تشرح اللغات ومكتوب عليها مثلا تعلم واحترف برمجه مواقع الويب في شهر او اسبوع هذا مستحيل ،  اذا ما نتعلم الاساسيات ونعرف تفاصيل اللغه بشكل جيد  ما راح نتعلم ونبدع في برمجة مشاريع بل لا نصل الى مرحله معرفه الاشياء التي تخص اللغه وليس الاحتراف والابداع باللغه ،
كلامي ليس ترويج للدوره في قناتي وانما اتكلم من باب حدث العاقل بما يعقل ..

وسبق وان كلت بان ليس هناك شي اسمه سهل او صعب وانما فقط ضع الهدف امامك واجتهد من اجل هذا الهدف بشرط ان يكون هناك لديك الحب والرغبه في التعلم بغض النظر عن الظروف التي تواجها وان شاء الله اسويلكم مقاله بخصوص المبتدئين في البرمجة وكيف تتعلموا بشكل صحيح ؟

وبالاخير من لم يشكر المخلوق لم يشكر الخالق ،طبعا الشكر موصول لكم جميعا وكل من تفاعل مع الدورة وكل من راسلني عبر بوت تواصل وشكرني  وانا هنا اشكركم مره ثانيه لحسن متابعه دروس الدوره التي كانت مطوله نوعا ما وحاولت اختصر لكن في بعض الدروس لابد من سرد تفاصيل كامله  وهذا ما اردته ايصاله لكم بالحرف الواحد لكي تتقنون الطريقه وتحترفونها من دون مشاكل ، 

من الحكم البرمجية التي اعجبتني : 

كن مثل الـ For
ان لم تصل الى هدفك من المحاولة الأولى عاود المحاوله مره واثنان وثلاثه حتى يتحقق مطلبك وهدفك،،،

ولا تكن مثل الـ if
تربط مصيرك بمحاولة واحدة إن تحققت تستمر وإن لم تتحقق تتوقف وتنتهي.
حاول أن تصنع أمامك عدة خيارات لكل طريق تسلكه .

إذا راودك الملل إختلق مشكلة برمجية ،المشاكل بالنسبة للناس هم وللمبرمجين هواية :)

تعليقات