(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
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ

