جلب القسم بناء على قيمة - مصمم هاوي - 21-04-25
أريد
كود :
التعديل على كود جلب الأقسام الدراسية في الكومبوكس
Classroom في الفورم FormSemester1
بناء على اختيار الصف من ListBox الموجود في الفورم الرئيسي
هذا كود تعبئة الليست بوكس بأسماء الصفوف الدراسية’
Private Sub fillNameClas(listBox As ListBox)
' إفراغ الكومبوكس من البيانات
ListBoxClas.Items.Clear()
Dim Sql_Str As String = "SELECT NameClas From TBL_Clas ORDER BY IDClas asc"
Dim InfoAdapter As OleDbDataAdapter = New OleDbDataAdapter(Sql_Str, Con)
Dim InfoTable As DataSet = New DataSet
InfoTable.Clear()
InfoAdapter.Fill(InfoTable, "TBL_Clas")
For Each rw As DataRow In InfoTable.Tables("TBL_Clas").Rows
ListBoxClas.Items.Add(rw(0).ToString())
Next
End Sub
وهذا كود لتعبئة الأقسام الدراسية التابعة للصفوف الدراسية
Private Sub fillcmb_TBL_Classroom()
Combroom.Items.Clear()
Dim Sql_Str As String = "SELECT DISTINCT Classroom From TBL_SClassroom Where ClassName = '" & listClas.Text & "'"
Dim InfoAdapter As OleDbDataAdapter = New OleDbDataAdapter(Sql_Str, Con)
Dim InfoTable As DataSet = New DataSet
InfoTable.Clear()
InfoAdapter.Fill(InfoTable, "TBL_SClassroom")
For Each rw As DataRow In InfoTable.Tables("TBL_SClassroom").Rows
Combroom.Items.Add(rw(0).ToString())
Next
End Sub
---------------------------------------------------------------------------------------
كود تعبئة الصفوف موجود في الفوره الرئيسي FormMin
وكود تعبئة الأقسم الدراسية موجود في الفورم FormSemester1 - FormSemester2
المطلوب: هل يمكن تعبئة كومبوكس الأقسام الدراسية الموجود في الفورمين FormSemester1 - FormSemester2
عوذلك عند اختيار الصف الدراسي من الليست بوكس الموجود في الفورم الرئيسي FormMin
جربت هذه الأكواد ولم انجح
إضافة حدث SelectedIndexChanged إلى الليست بوكس في الفورم الرئيسي FormMin، ثم استدعاء دالة تعبئة الأقسام الدراسية في الفورمين FormSemester1 و FormSemester2.
في FormMin:
```
Private Sub ListBoxClas_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBoxClas.SelectedIndexChanged
If FormSemester1.Visible Then
FormSemester1.fillcmb_TBL_Classroom()
ElseIf FormSemester2.Visible Then
FormSemester2.fillcmb_TBL_Classroom()
End If
End Sub
```
ثم إضافة حدث SelectedIndexChanged إلى الليست بوكس في الفورم الرئيسي FormMin، ثم استدعاء دالة تعبئة الأقسام الدراسية في الفورمين FormSemester1 و FormSemester2 عن طريق إنشاء واجهة أو فئة مشتركة بين الفورمين.
وهذا كود في الفورمين الموجود فيهما كومبوكس Classroom
Public Sub fillcmb_TBL_Classroom()
Combroom.Items.Clear()
Dim Sql_Str As String = "SELECT DISTINCT Classroom From TBL_SClassroom Where ClassName = '" & FormMin.ListBoxClas.Text & "'"
Dim InfoAdapter As OleDbDataAdapter = New OleDbDataAdapter(Sql_Str, Con)
Dim InfoTable As DataSet = New DataSet
InfoTable.Clear()
InfoAdapter.Fill(InfoTable, "TBL_SClassroom")
For Each rw As DataRow In InfoTable.Tables("TBL_SClassroom").Rows
Combroom.Items.Add(rw(0).ToString())
Next
End Sub
RE: جلب القسم بناء على قيمة - مصمم هاوي - 22-04-25
بارك الله فيكم تم حلَّ المشلكة بهذا الكود
في الفورم الرئيسي
كود :
Dim frm As New FormSemester1 : frm.MdiParent = Me : frm.Show() : frm.fillcmb_TBL_Classroom()
وفي الفورم تم إنشاء صب
كود :
Public Sub fillcmb_TBL_Classroom()
If FormMin.ListBoxClas.SelectedItem IsNot Nothing Then
Me.Combroom.Items.Clear()
Dim Sql_Str As String = "SELECT DISTINCT Classroom From TBL_SClassroom Where ClassName = '" & FormMin.ListBoxClas.Text() & "'"
Dim InfoAdapter As OleDbDataAdapter = New OleDbDataAdapter(Sql_Str, Con)
Dim InfoTable As DataSet = New DataSet
InfoTable.Clear()
InfoAdapter.Fill(InfoTable, "TBL_SClassroom")
For Each rw As DataRow In InfoTable.Tables("TBL_SClassroom").Rows
Me.Combroom.Items.Add(rw(0).ToString())
Next
Else
MessageBox.Show(" عفواً ، يجب اختيـار فصـل دراســي", "تنبيــه", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
End If
End Sub
RE: جلب القسم بناء على قيمة - princelovelorn - 22-04-25
السلام عليكم ورحمة الله وبركاته
جرب الأكواد التالية أخي
في FormSemester1 و FormSemester2 اضف الدالة التالية
كود :
Public Sub UpdateClassroomCombo(selectedClassName As String)
Combroom.Items.Clear()
Dim Sql_Str As String = "SELECT DISTINCT Classroom FROM TBL_SClassroom WHERE ClassName = @ClassName"
Using cmd As New OleDbCommand(Sql_Str, Con)
cmd.Parameters.AddWithValue("@ClassName", selectedClassName)
Using adapter As New OleDbDataAdapter(cmd)
Dim dt As New DataTable()
adapter.Fill(dt)
For Each row As DataRow In dt.Rows
Combroom.Items.Add(row("Classroom").ToString())
Next
End Using
End Using
End Sub
وفي FormMin اضف الدالة التالية
كود :
rivate Sub ListBoxClas_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBoxClas.SelectedIndexChanged
Dim selectedClass As String = ListBoxClas.SelectedItem?.ToString()
If String.IsNullOrEmpty(selectedClass) Then Return
Dim f1 = Application.OpenForms().OfType(Of FormSemester1)().FirstOrDefault()
If f1 IsNot Nothing Then
f1.UpdateClassroomCombo(selectedClass)
End If
Dim f2 = Application.OpenForms().OfType(Of FormSemester2)().FirstOrDefault()
If f2 IsNot Nothing Then
f2.UpdateClassroomCombo(selectedClass)
End If
End Sub
(22-04-25, 08:33 PM)مصمم هاوي كتب : بارك الله فيكم تم حلَّ المشلكة بهذا الكود
في الفورم الرئيسي
كود :
Dim frm As New FormSemester1 : frm.MdiParent = Me : frm.Show() : frm.fillcmb_TBL_Classroom()
وفي الفورم تم إنشاء صب
كود :
Public Sub fillcmb_TBL_Classroom()
If FormMin.ListBoxClas.SelectedItem IsNot Nothing Then
Me.Combroom.Items.Clear()
Dim Sql_Str As String = "SELECT DISTINCT Classroom From TBL_SClassroom Where ClassName = '" & FormMin.ListBoxClas.Text() & "'"
Dim InfoAdapter As OleDbDataAdapter = New OleDbDataAdapter(Sql_Str, Con)
Dim InfoTable As DataSet = New DataSet
InfoTable.Clear()
InfoAdapter.Fill(InfoTable, "TBL_SClassroom")
For Each rw As DataRow In InfoTable.Tables("TBL_SClassroom").Rows
Me.Combroom.Items.Add(rw(0).ToString())
Next
Else
MessageBox.Show(" عفواً ، يجب اختيـار فصـل دراســي", "تنبيــه", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
End If
End Sub
الحمد لله أنك توصلت لحل المشكلة
وجزاك الله خيرا على مشاركتك للحل
|