تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تعديل كود تحديث البيانات
#1
في الفـــورم FormSemester4 يتم إدخال درجـــات الدور التكميلي من (100) فــي المصفوفـة  (tr1 - tr2 - tr3 - tr4 - tr5 - tr6 )
ولكن عند حفظ الدرجــات المرقمة  بــ (3) فـي الحقل  (IDSemester) يتم تكــرار الصفوف
جربت كثير من الأكواد ولكن دون جدوى (وفي المثال كودين للحفظ)
وكذلك عند الحفظ يظهر خطأ تكرار القيم حتى يتم إلغـاء المفتاح الرئيسي والثانوي؛ ولا يمكن جمع الدرجــات النهائيــة بدونهما

للعلم أن هذه المشكلة في هذا الفورم FormSemester4  فقط

أرجـــــــــــــــــــــو معالجـــــــــــــــــة المشكلــة
حاولتُ إرفاق مثال ولكن لم يقبل
هذا هو الكود الأول
كود :
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
        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 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("?", Val(DataGridView1.Rows(i).Cells(3).Value)) ' IDClas
            command.Parameters.AddWithValue("?", Combroom.SelectedIndex + 1) ' ClassroomID
            command.Parameters.AddWithValue("?", Val(CombSemester.SelectedItem.ToString)) ' IDSemester
            Dim reader As OleDbDataReader = command.ExecuteReader()
            If reader.Read() 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("?", Val(DataGridView1.Rows(i).Cells(3).Value)) ' IDClas
                command.Parameters.AddWithValue("?", Combroom.SelectedIndex + 1) ' ClassroomID
                command.Parameters.AddWithValue("?", Val(CombSemester.SelectedItem.ToString)) ' 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("?", Val(DataGridView1.Rows(i).Cells(3).Value)) ' IDClas
                command.Parameters.AddWithValue("?", Combroom.SelectedIndex + 1) ' ClassroomID
                command.Parameters.AddWithValue("?", Val(CombSemester.SelectedItem.ToString)) ' 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
    End Sub

وهذا هو الكود الثاني

كود :
Private Sub ButSave_Click(sender As Object, e As EventArgs) Handles ButSave.Click
        ' صب حفظ الدرجـات
        Save_Grade()

    End Sub

    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 IDStudent As Integer = Val(DataGridView1.Rows(i).Cells(0).Value)
                Dim IDClas As Integer = FormMin.ListBoxClas.SelectedIndices(0) + 1
                Dim ClassroomID As Integer = Combroom.SelectedIndex + 1
                'Dim IDSemester As Integer = 1
                Dim IDSemester As Integer = Val(CombSemester.Text)
                Dim ONValue As Integer = Val(DataGridView1.Rows(i).Cells(5).Value)
                DataGridView1.Rows(i).Cells(7).Value = ONValue

                Dim courseIndex As Integer = CombCourses.SelectedIndex + 1

                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("?", IDStudent)
                command.Parameters.AddWithValue("?", IDClas)
                command.Parameters.AddWithValue("?", ClassroomID)
                command.Parameters.AddWithValue("?", IDSemester)
                Dim reader As OleDbDataReader = command.ExecuteReader()

                If reader.HasRows Then
                    reader.Close()
                    query = "UPDATE TBL_Final1 SET ON" & courseIndex & "=? WHERE IDStudent=? AND IDClas=? AND ClassroomID=? AND IDSemester=?"
                    command = New OleDbCommand(query, con)
                    command.Parameters.AddWithValue("?", ONValue)
                    command.Parameters.AddWithValue("?", IDStudent)
                    command.Parameters.AddWithValue("?", IDClas)
                    command.Parameters.AddWithValue("?", ClassroomID)
                    command.Parameters.AddWithValue("?", IDSemester)
                    command.ExecuteNonQuery()
                Else
                    reader.Close()
                    query = "INSERT INTO TBL_Final1 (IDStudent, IDClas, ClassroomID, IDSemester, ON" & courseIndex & ") VALUES (?, ?, ?, ?, ?)"
                    command = New OleDbCommand(query, con)
                    command.Parameters.AddWithValue("?", IDStudent)
                    command.Parameters.AddWithValue("?", IDClas)
                    command.Parameters.AddWithValue("?", ClassroomID)
                    command.Parameters.AddWithValue("?", IDSemester)
                    command.Parameters.AddWithValue("?", ONValue)
                    command.ExecuteNonQuery()
                End If

                ' قراءة TO
                Dim TOValue As Integer = 0
                Dim cmdTO As New OleDbCommand("SELECT TO" & courseIndex & " FROM TBL_Final1 WHERE IDStudent=? AND IDClas=? AND ClassroomID=? AND IDSemester=?", con)
                cmdTO.Parameters.AddWithValue("?", IDStudent)
                cmdTO.Parameters.AddWithValue("?", IDClas)
                cmdTO.Parameters.AddWithValue("?", ClassroomID)
                cmdTO.Parameters.AddWithValue("?", IDSemester)
                Dim resultTO = cmdTO.ExecuteScalar()
                If Not IsDBNull(resultTO) Then TOValue = CInt(resultTO)

                ' تحديث TR
                'Dim TRValue As Integer = ONValue + 0
                Dim cmdTR As New OleDbCommand("UPDATE TBL_Final1 SET TR" & courseIndex & "=? WHERE IDStudent=? AND IDClas=? AND ClassroomID=? AND IDSemester=?", con)
                'cmdTR.Parameters.AddWithValue("?", TRValue)
                cmdTR.Parameters.AddWithValue("?", IDStudent)
                cmdTR.Parameters.AddWithValue("?", IDClas)
                cmdTR.Parameters.AddWithValue("?", ClassroomID)
                cmdTR.Parameters.AddWithValue("?", IDSemester)
                cmdTR.ExecuteNonQuery()
            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
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة:
#2
تم حل المسكلة
كود :
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
إذا طُعِنتَ من الخلفِ فاعلمْ أنك في المقدمةِ
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] مساعدة تعديل على الكود ZEEN4ZEEN 2 196 08-10-25, 02:20 PM
آخر رد: salamandal
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 813 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 789 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,179 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,016 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  مساعدة في تحديث سيد أحمد 2 548 18-05-25, 03:11 AM
آخر رد: مصمم هاوي
  بطء في جلب البيانات مصمم هاوي 9 976 08-05-25, 07:51 AM
آخر رد: مصمم هاوي
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 688 26-04-25, 12:24 AM
آخر رد: الدريساوي
  مساعدة في طريقة تحميل الفيديوهات المخزنة في قاعدة البيانات foad8920 0 653 24-04-25, 12:58 PM
آخر رد: foad8920
  إغلاق الفورم مع حذف جميع البيانات الموجودة به صالح عبدالله 10 1,029 19-04-25, 08:54 PM
آخر رد: Kamil

التنقل السريع :


يقوم بقرائة الموضوع: