تم حل المسكلة
كود :
Private Sub Save_Grade()
' رصـد درجـات الدور التكميلي حسب المــادة
Try
If DataGridView1.Rows.Count = 0 OrElse (DataGridView1.Rows.Count = 1 AndAlso DataGridView1.Rows(0).IsNewRow) Then
MessageBox.Show(" عفواً ، لا توجـد بيانــات للحفظ", "تنبيــه", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
Exit Sub
End If
Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\DataBase\Data_Base.accdb")
con.Open()
For i As Integer = 0 To DataGridView1.Rows.Count - 2
Dim query As String = "SELECT * FROM TBL_Final1 WHERE IDStudent = ? AND IDClas = ? AND ClassroomID = ? AND IDSemester = ?"
Dim command As New OleDbCommand(query, con)
command.Parameters.AddWithValue("?", Val(DataGridView1.Rows(i).Cells(0).Value)) ' IDStudent
command.Parameters.AddWithValue("?", FormMin.ListBoxClas.SelectedIndices(0) + 1) ' IDClas
command.Parameters.AddWithValue("?", Combroom.SelectedIndex + 1) ' ClassroomID
command.Parameters.AddWithValue("?", Val(CombSemester.Text)) ' IDSemester
Dim reader As OleDbDataReader = command.ExecuteReader()
If reader.HasRows Then
reader.Close()
query = "UPDATE TBL_Final1 SET tr" & CombCourses.SelectedIndex + 1 & " = ? WHERE IDStudent = ? AND IDClas = ? AND ClassroomID = ? AND IDSemester = ?"
command = New OleDbCommand(query, con)
command.Parameters.AddWithValue("?", Val(DataGridView1.Rows(i).Cells(5).Value)) ' TRValue
command.Parameters.AddWithValue("?", Val(DataGridView1.Rows(i).Cells(0).Value)) ' IDStudent
command.Parameters.AddWithValue("?", FormMin.ListBoxClas.SelectedIndices(0) + 1) ' IDClas
command.Parameters.AddWithValue("?", Combroom.SelectedIndex + 1) ' ClassroomID
command.Parameters.AddWithValue("?", Val(CombSemester.Text)) ' IDSemester
command.ExecuteNonQuery()
Else
reader.Close()
query = "INSERT INTO TBL_Final1 (IDStudent, IDClas, ClassroomID, IDSemester, tr" & CombCourses.SelectedIndex + 1 & ") VALUES (?, ?, ?, ?, ?)"
command = New OleDbCommand(query, con)
command.Parameters.AddWithValue("?", Val(DataGridView1.Rows(i).Cells(0).Value)) ' IDStudent
command.Parameters.AddWithValue("?", FormMin.ListBoxClas.SelectedIndices(0) + 1) ' IDClas
command.Parameters.AddWithValue("?", Combroom.SelectedIndex + 1) ' ClassroomID
command.Parameters.AddWithValue("?", Val(CombSemester.Text)) ' IDSemester
command.Parameters.AddWithValue("?", Val(DataGridView1.Rows(i).Cells(5).Value)) ' TRValue
command.ExecuteNonQuery()
End If
Next
con.Close()
MessageBox.Show("تم رصد درجــات الدور التكميلي لــ : " & " " & FormMin.ListBoxClas.Text & vbCrLf & " لمــادة : " & Me.CombCourses.Text & " * بنجــاح ", "الإجـــراء", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
' إفراغ عمود درجات الأعمال
For Each row As DataGridViewRow In DataGridView1.Rows
row.Cells(5).Value = DBNull.Value
Next
' منع إضافة صف جديد عند الوصول لآخر طالب
For Each row As DataGridViewRow In DataGridView1.Rows
If Not row.IsNewRow Then
row.Cells(5).Value = DBNull.Value
End If
Next
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Information)
Finally
End Try
End Sub
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ

