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
.
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
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 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
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
إذا كان لديك أي أسئلة أو تحتاج إلى توضيحات إضافية، فلا تتردد في طرحها!
تعليقات
إرسال تعليق