9 | Display Study fee based on the selected Stage. - VB.NET & SQL Server

 الكود المستخدم داخل Private Sub frm_Register_New_Student_Load


١. تعريف الإجراء:

  • Private Sub frm_Register_New_Student_Load(...): هذا الإجراء يتم استدعاؤه عندما يتم تحميل النموذج (Form) المسمى frm_Register_New_Student.

٢. إنشاء اتصال بقاعدة البيانات:

  • Dim con As New SqlConnection(conString): يتم إنشاء كائن جديد من SqlConnection باستخدام سلسلة الاتصال conString.

٣.إنشاء DataTable:
  • Dim dtfee As New DataTable: يتم إنشاء كائن جديد من نوع DataTable لتخزين البيانات المستردة.

٤. مسح محتويات dtfee:

():dtfee.Clear يتم مسح أي بيانات قد تكون موجودة سابقًا في dtfee.

٥. فتح الاتصال:

con.Open(): يتم فتح الاتصال بقاعدة البيانات.

٦. استخدام الأمر SqlCommand:

  • Using cmd As New SqlCommand(...): يتم إنشاء كائن جديد من SqlCommand لتنفيذ استعلام SQL.
  • الاستعلام يقوم باختيار عمود study_fee من جدول tbl_stages، حيث تكون الحالة status "متاحة" (Available) والمرحلة (stage) هي ما تم تحديده في cbox_stage.

٧. إضافة المعلمات:

  • cmd.Parameters.AddWithValue("@status", "Available"): يضيف معلمة للاستعلام لضمان أن الحالة هي "متاحة".
  • cmd.Parameters.AddWithValue("@stage", cbox_stage.Text.Trim): يضيف معلمة أخرى للاستعلام باستخدام القيمة المحددة في cbox_stage (مع إزالة الفراغات الزائدة).

٨. تعيين نوع الأمر ووقت التنفيذ:

  • cmd.CommandType = CommandType.Text: يشير إلى أن الأمر هو نص SQL عادي.
  • cmd.CommandTimeout = 420: يحدد الوقت المسموح به (بالثواني) لتنفيذ الأمر. في هذه الحالة، ٤٢٠ ثانية.

٩. تحميل البيانات إلى dtfee:

  • dtfee.Load(cmd.ExecuteReader): يتم تنفيذ الأمر واسترداد البيانات من قاعدة البيانات، ويتم تحميل هذه البيانات في dtfee.

١٠. التحقق من وجود بيانات: -

If dtfee.Rows.Count <> 0 Then: يتحقق مما إذا كانت هناك أي صفوف تم استردادها. - إذا كانت النتيجة إيجابية، يتم تعيين قيمة study_fee إلى مربع النص txt_fee: - txt_fee.Text = dtfee.Rows(0).Item("study_fee").ToString: يتم تعيين النص في txt_fee إلى القيمة الموجودة في الصف الأول من dtfee.


١١. إغلاق الاتصال: -

 يتم إغلاق الاتصال في كلتا الحالتين (وجود بيانات أو عدم وجودها) بعد الانتهاء من استخدامه، وذلك بفضل كتلة Using.


خلاصة:

هذا الكود يقوم باسترداد الرسوم الدراسية (study fee) بناءً على الحالة والمرحلة المحددة في ComboBox عند تحميل نموذج تسجيل طالب جديد. إذا تم العثور على رسوم دراسية، يتم عرضها في مربع النص txt_fee.


 كود المستخدم بهذا الدرس فقط داخل حدث  frm_Register_New_Student_Load

        Dim con As New SqlConnection(conString)

        Dim dtfee As New DataTable

        dtfee.Clear()

        con.Open()

 

        Using cmd As New SqlCommand("SELECT study_fee  FROM tbl_stages WHERE status= @status and stage = @stage", con)

            cmd.Parameters.AddWithValue("@status", "Available")

            cmd.Parameters.AddWithValue("@stage", cbox_stage.Text.Trim)

            cmd.CommandType = CommandType.Text

            cmd.CommandTimeout = 420

            dtfee.Load(cmd.ExecuteReader)

            If dtfee.Rows.Count <> 0 Then

                txt_fee.Text = dtfee.Rows(0).Item("study_fee").ToString

                con.Close()

            Else

                con.Close()

            End If

        End Using

الكود كامل المستخدم داخل حدث  frm_Register_New_Student_Load  

Private Sub frm_Register_New_Student_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ' كود الدروس السابقة

        Dim con As New SqlConnection(conString)

        Dim dtstages As New DataTable

        dtstages.Clear()

        con.Open()


        Using cmd As New SqlCommand("SELECT ID,stage FROM tbl_stages WHERE status='Available'", con)

            cmd.CommandType = CommandType.Text

            cmd.CommandTimeout = 420

            dtstages.Load(cmd.ExecuteReader)

 

            If dtstages.Rows.Count <> 0 Then

                cbox_stage.DataSource = dtstages

                cbox_stage.DisplayMember = "stage"

                cbox_stage_id.DataSource = dtstages

                cbox_stage_id.DisplayMember = "ID"

                con.Close()

            Else

                con.Close()

            End If

        End Using

      '____________________________________________________________________

        كود الدرس الحالي

        Dim dtfee As New DataTable

        dtfee.Clear()

        con.Open()

 

        Using cmd As New SqlCommand("SELECT study_fee  FROM tbl_stages WHERE status= @status and stage = @stage", con)

            cmd.Parameters.AddWithValue("@status""Available")

            cmd.Parameters.AddWithValue("@stage", cbox_stage.Text.Trim)

            cmd.CommandType = CommandType.Text

            cmd.CommandTimeout = 420

            dtfee.Load(cmd.ExecuteReader)


            If dtfee.Rows.Count <> 0 Then

                txt_fee.Text = dtfee.Rows(0).Item("study_fee").ToString

                con.Close()

            Else

                con.Close()

            End If

        End Using

End If 


 الكود المستخدم داخل Private Sub cbox_stage_SelectedIndexChanged


تعريف الإجراء:

  • Private Sub cbox_stage_SelectedIndexChanged(...): هذا الإجراء يتم استدعاؤه عندما يتغير الخيار المحدد في ComboBox المسمى cbox_stage.

خلاصة:

هذا الكود يقوم باسترداد الرسوم الدراسية (study fee) بناءً على المرحلة المحددة في ComboBox عند تغيير اختيار المستخدم. إذا تم العثور على رسوم دراسية، يتم عرضها في مربع النص txt_fee.


كود المستخدم بهذا الدرس  داخل حدث  cbox_stage_SelectedIndexChanged


Private Sub cbox_stage_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbox_stage.SelectedIndexChanged

 

        Dim con As New SqlConnection(conString)

        Dim dtfee As New DataTable

        dtfee.Clear()

        con.Open()

        Using cmd As New SqlCommand("SELECT study_fee  FROM tbl_stages WHERE status= @status and stage = @stage", con)

            cmd.Parameters.AddWithValue("@status", "Available")

            cmd.Parameters.AddWithValue("@stage", cbox_stage.Text.Trim)

            cmd.CommandType = CommandType.Text

            cmd.CommandTimeout = 420

            dtfee.Load(cmd.ExecuteReader)

            If dtfee.Rows.Count <> 0 Then

                txt_fee.Text = dtfee.Rows(0).Item("study_fee").ToString

                con.Close()

            Else

                con.Close()

            End If

        End Using

    End Sub

إذا كان لديك أي أسئلة أو تحتاج إلى توضيحات إضافية، فلا تتردد في طرحها!


يمكنكم متابعة الدرس عن طريق اليوتيوب


تعليقات

المشاركات الشائعة من هذه المدونة

7 | Display column's stages from the database into ComboBox's Stage - VB.NET & SQL Server

26 | Filter Students List based on students' stage and Group in DataGridView - VB.NET & SQL Server

8 | Get selected Stage and Group IDs from their ComboBoxes - VB.NET & SQL Server