منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تعديل على استدعاء الدرجات حسب الاختيار
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
(15-04-25, 05:25 AM)princelovelorn كتب : [ -> ]السلام عليكم ورحمة الله وبركاته

بعد الكثير من المحاولات توصلت لحل بفضل الله تعالى
تفضل المثال في المرفقات

مجهــودٌ كبيــرٌ، وعملٌ جبـارٌ، وتعديلٌ مسددٌ، ومثالٌ موفقٌ
لا يسعُنـي إلا أن أقولَ لك أخــي الكريم الذي أزاحَ عن كاهلـي حملاً ثقيلاً وأراحنـي من السهر الطويل والمحاولات المكررة والتي باءت بالفشل كلها

فباركـــــــــ اللهُ فيكــــ (princelovelorn)
وجزاكـــــــ كل خيراً
وفتح عليكــــــــ  من خيري الدنيا والآخــرة
وزادكــــــــ اللهُ بسطةً في العلم
وفرج همَّك ، ونفَّس كربكَ

بقـى تعديل صغير في كود حفظ الدرجـات يعمل تمام غير أنه لا يحفظ قيمـة IDClas  في الجدول TBL_Final1

كود :
Private Sub Save_Grade()
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=" & Application.StartupPath & "\DataBase\Data_Base.accdb")
        If DataGridView1.Rows.Count = 0 Then Exit Sub
        con.Open()
        For i As Integer = 0 To DataGridView1.Rows.Count - 2
            Dim IDStudent As Integer = Val(DataGridView1.Rows(i).Cells(0).Value)
            Dim IDClas As Integer = Val(listClas.GetItemText(listClas.SelectedItem(0)).Split("-")(0)) ' تحديد قيمة IDClas من listClas
            Dim IDSemester As Integer = Val(CombSemester.Text)
            Dim ONValue As Integer = Val(DataGridView1.Rows(i).Cells(6).Value)

            Dim query As String = "SELECT * FROM TBL_Final1 WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
            Dim command As New OleDbCommand(query, con)
            command.Parameters.AddWithValue("?", IDStudent)
            command.Parameters.AddWithValue("?", IDClas)
            command.Parameters.AddWithValue("?", IDSemester)
            Dim reader As OleDbDataReader = command.ExecuteReader()
            If reader.HasRows Then
                reader.Close()
                query = "UPDATE TBL_Final1 SET ON" & CombCourses.SelectedIndex + 1 & " = ? WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
                command = New OleDbCommand(query, con)
                command.Parameters.AddWithValue("?", ONValue)
                command.Parameters.AddWithValue("?", IDStudent)
                command.Parameters.AddWithValue("?", IDClas)
                command.Parameters.AddWithValue("?", IDSemester)
                command.ExecuteNonQuery()
            Else
                reader.Close()
                query = "INSERT INTO TBL_Final1 (IDStudent, IDClas, IDSemester, ON" & CombCourses.SelectedIndex + 1 & ") VALUES (?, ?, ?, ?)"
                command = New OleDbCommand(query, con)
                command.Parameters.AddWithValue("?", IDStudent)
                command.Parameters.AddWithValue("?", IDClas)
                command.Parameters.AddWithValue("?", IDSemester)
                command.Parameters.AddWithValue("?", ONValue)
                command.ExecuteNonQuery()
            End If
        Next
        con.Close()
        MsgBox("تم رصد درجــات الصــف : " & " " & listClas.Text & Chr(13) & " لمــادة : " & CombCourses.Text & " * بنجــاح " & "", MsgBoxStyle.Information, "الإجـــراء")
        ' إفراغ عمود درجات الأعمال
        For Each row As DataGridViewRow In DataGridView1.Rows
            row.Cells(6).Value = DBNull.Value
        Next
    End Sub

الحمد لله نجح هذا الكود في حفظ قيمة IDCLAS
كود :
Private Sub Save_Grade()
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=" & Application.StartupPath & "\DataBase\Data_Base.accdb")
        If DataGridView1.Rows.Count = 0 Then Exit Sub
        con.Open()
        For i As Integer = 0 To DataGridView1.Rows.Count - 2
            Dim IDStudent As Integer = Val(DataGridView1.Rows(i).Cells(0).Value)
            Dim IDClas As Integer = CInt(listClas.SelectedIndices(0) + 1) ' تحديد قيمة IDClas من SelectedIndex
            Dim IDSemester As Integer = Val(CombSemester.Text)
            Dim ONValue As Integer = Val(DataGridView1.Rows(i).Cells(6).Value)

            Dim query As String = "SELECT * FROM TBL_Final1 WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
            Dim command As New OleDbCommand(query, con)
            command.Parameters.AddWithValue("?", IDStudent)
            command.Parameters.AddWithValue("?", IDClas)
            command.Parameters.AddWithValue("?", IDSemester)
            Dim reader As OleDbDataReader = command.ExecuteReader()
            If reader.HasRows Then
                reader.Close()
                query = "UPDATE TBL_Final1 SET ON" & CombCourses.SelectedIndex + 1 & " = ? WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
                command = New OleDbCommand(query, con)
                command.Parameters.AddWithValue("?", ONValue)
                command.Parameters.AddWithValue("?", IDStudent)
                command.Parameters.AddWithValue("?", IDClas)
                command.Parameters.AddWithValue("?", IDSemester)
                command.ExecuteNonQuery()
            Else

                reader.Close()
                query = "INSERT INTO TBL_Final1 (IDStudent, IDClas, IDSemester, ON" & CombCourses.SelectedIndex + 1 & ") VALUES (?, ?, ?, ?)"
                command = New OleDbCommand(query, con)
                command.Parameters.AddWithValue("?", IDStudent)
                command.Parameters.AddWithValue("?", IDClas)
                command.Parameters.AddWithValue("?", IDSemester)
                command.Parameters.AddWithValue("?", ONValue)
                command.ExecuteNonQuery()
            End If
        Next
        con.Close()
        MsgBox("تم رصد درجــات الصــف : " & " " & listClas.Text & Chr(13) & " لمــادة : " & CombCourses.Text & " * بنجــاح " & "", MsgBoxStyle.Information, "الإجـــراء")
        ' إفراغ عمود درجات الأعمال
        For Each row As DataGridViewRow In DataGridView1.Rows
            row.Cells(6).Value = DBNull.Value
        Next
    End Sub
(15-04-25, 05:25 PM)مصمم هاوي كتب : [ -> ]
(15-04-25, 05:25 AM)princelovelorn كتب : [ -> ]السلام عليكم ورحمة الله وبركاته

بعد الكثير من المحاولات توصلت لحل بفضل الله تعالى
تفضل المثال في المرفقات

مجهــودٌ كبيــرٌ، وعملٌ جبـارٌ، وتعديلٌ مسددٌ، ومثالٌ موفقٌ
لا يسعُنـي إلا أن أقولَ لك أخــي الكريم الذي أزاحَ عن كاهلـي حملاً ثقيلاً وأراحنـي من السهر الطويل والمحاولات المكررة والتي باءت بالفشل كلها

فباركـــــــــ اللهُ فيكــــ (princelovelorn)
وجزاكـــــــ كل خيراً
وفتح عليكــــــــ  من خيري الدنيا والآخــرة
وزادكــــــــ اللهُ بسطةً في العلم
وفرج همَّك ، ونفَّس كربكَ

بقـى تعديل صغير في كود حفظ الدرجـات يعمل تمام غير أنه لا يحفظ قيمـة IDClas  في الجدول TBL_Final1

كود :
Private Sub Save_Grade()
       Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=" & Application.StartupPath & "\DataBase\Data_Base.accdb")
       If DataGridView1.Rows.Count = 0 Then Exit Sub
       con.Open()
       For i As Integer = 0 To DataGridView1.Rows.Count - 2
           Dim IDStudent As Integer = Val(DataGridView1.Rows(i).Cells(0).Value)
           Dim IDClas As Integer = Val(listClas.GetItemText(listClas.SelectedItem(0)).Split("-")(0)) ' تحديد قيمة IDClas من listClas
           Dim IDSemester As Integer = Val(CombSemester.Text)
           Dim ONValue As Integer = Val(DataGridView1.Rows(i).Cells(6).Value)

           Dim query As String = "SELECT * FROM TBL_Final1 WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
           Dim command As New OleDbCommand(query, con)
           command.Parameters.AddWithValue("?", IDStudent)
           command.Parameters.AddWithValue("?", IDClas)
           command.Parameters.AddWithValue("?", IDSemester)
           Dim reader As OleDbDataReader = command.ExecuteReader()
           If reader.HasRows Then
               reader.Close()
               query = "UPDATE TBL_Final1 SET ON" & CombCourses.SelectedIndex + 1 & " = ? WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
               command = New OleDbCommand(query, con)
               command.Parameters.AddWithValue("?", ONValue)
               command.Parameters.AddWithValue("?", IDStudent)
               command.Parameters.AddWithValue("?", IDClas)
               command.Parameters.AddWithValue("?", IDSemester)
               command.ExecuteNonQuery()
           Else
               reader.Close()
               query = "INSERT INTO TBL_Final1 (IDStudent, IDClas, IDSemester, ON" & CombCourses.SelectedIndex + 1 & ") VALUES (?, ?, ?, ?)"
               command = New OleDbCommand(query, con)
               command.Parameters.AddWithValue("?", IDStudent)
               command.Parameters.AddWithValue("?", IDClas)
               command.Parameters.AddWithValue("?", IDSemester)
               command.Parameters.AddWithValue("?", ONValue)
               command.ExecuteNonQuery()
           End If
       Next
       con.Close()
       MsgBox("تم رصد درجــات الصــف : " & " " & listClas.Text & Chr(13) & " لمــادة : " & CombCourses.Text & " * بنجــاح " & "", MsgBoxStyle.Information, "الإجـــراء")
       ' إفراغ عمود درجات الأعمال
       For Each row As DataGridViewRow In DataGridView1.Rows
           row.Cells(6).Value = DBNull.Value
       Next
   End Sub

الحمد لله نجح هذا الكود في حفظ قيمة IDCLAS
كود :
Private Sub Save_Grade()
       Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=" & Application.StartupPath & "\DataBase\Data_Base.accdb")
       If DataGridView1.Rows.Count = 0 Then Exit Sub
       con.Open()
       For i As Integer = 0 To DataGridView1.Rows.Count - 2
           Dim IDStudent As Integer = Val(DataGridView1.Rows(i).Cells(0).Value)
           Dim IDClas As Integer = CInt(listClas.SelectedIndices(0) + 1) ' تحديد قيمة IDClas من SelectedIndex
           Dim IDSemester As Integer = Val(CombSemester.Text)
           Dim ONValue As Integer = Val(DataGridView1.Rows(i).Cells(6).Value)

           Dim query As String = "SELECT * FROM TBL_Final1 WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
           Dim command As New OleDbCommand(query, con)
           command.Parameters.AddWithValue("?", IDStudent)
           command.Parameters.AddWithValue("?", IDClas)
           command.Parameters.AddWithValue("?", IDSemester)
           Dim reader As OleDbDataReader = command.ExecuteReader()
           If reader.HasRows Then
               reader.Close()
               query = "UPDATE TBL_Final1 SET ON" & CombCourses.SelectedIndex + 1 & " = ? WHERE IDStudent = ? AND IDClas = ? AND IDSemester = ?"
               command = New OleDbCommand(query, con)
               command.Parameters.AddWithValue("?", ONValue)
               command.Parameters.AddWithValue("?", IDStudent)
               command.Parameters.AddWithValue("?", IDClas)
               command.Parameters.AddWithValue("?", IDSemester)
               command.ExecuteNonQuery()
           Else

               reader.Close()
               query = "INSERT INTO TBL_Final1 (IDStudent, IDClas, IDSemester, ON" & CombCourses.SelectedIndex + 1 & ") VALUES (?, ?, ?, ?)"
               command = New OleDbCommand(query, con)
               command.Parameters.AddWithValue("?", IDStudent)
               command.Parameters.AddWithValue("?", IDClas)
               command.Parameters.AddWithValue("?", IDSemester)
               command.Parameters.AddWithValue("?", ONValue)
               command.ExecuteNonQuery()
           End If
       Next
       con.Close()
       MsgBox("تم رصد درجــات الصــف : " & " " & listClas.Text & Chr(13) & " لمــادة : " & CombCourses.Text & " * بنجــاح " & "", MsgBoxStyle.Information, "الإجـــراء")
       ' إفراغ عمود درجات الأعمال
       For Each row As DataGridViewRow In DataGridView1.Rows
           row.Cells(6).Value = DBNull.Value
       Next
   End Sub

هذا فضل من الله وحده
الحمد لله والشكر لله
وجزاك الله خيراً على دعواتك
اللهم أمين وإياكم
الصفحات : 1 2