السلام عليكم ورحمة الله
لم أتعامل مع الأمر RejectChanges
لكن هذا كود من أحد فورمات مشروع أحد الأخوة الله يذكره بالخير، إن شاء الله يفيدك
ستلاحظ أن الحقل id في الداتاجريد عند إضافة سطر جديد لا يحتوي شيء
وهذا طبيعي لأن الترقيم يتم في قاعدة البيانات لكن سترى القيمة بعد التحديث
PHP كود :
Imports System.Data.OleDb
Public Class Form1
Dim conn As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Database1.accdb;")
Dim myDatatable As New DataTable
Dim sql As String = "SELECT * FROM [table1] "
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' قراءة قاعدة البيانات '
ReadDatabase()
End Sub
' قراءة قاعدة البيانات '
Private Sub ReadDatabase()
Using da As New OleDbDataAdapter(sql, conn)
myDatatable.Clear() ' إفراغ الداتاتابل '
da.Fill(myDatatable)
Me.DataGridView1.DataSource = myDatatable
End Using
End Sub
' إضافة بيانات للداتاتابل فقط '
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
' إضافة سطر جديد '
Dim NewRow As DataRow
NewRow = myDatatable.NewRow
'NewRow("id") = ### لا يستخدم هذا السطر إذا كان الترقيم تلقائي '
NewRow("name") = Me.TextBox1.Text
' إضافته للداتاتابل '
myDatatable.Rows.Add(NewRow)
Me.DataGridView1.Refresh()
MsgBox("تم إضافة البيانات للداتاتابل وليس قاعدة البيانات")
End Sub
' التراجع عن التحديثات '
' بشرط لم يتم عمل تحديث لقاعدة البيانات '
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
If MsgBox("هل تريد بالفعل التراجع عن كل التعديلات التي قمت بها" & vbNewLine & _
"على البيانات التي تمت على الداتاتابل؟" _
, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
' عمل تراجع على الداتاتابل '
myDatatable.RejectChanges()
MsgBox("تم التراجع عن جميع التعديلات" & vbNewLine & _
"التي تمت على الداتاتابل")
End If
End Sub
' لتحديث قاعدة البيانات بشكل نهائي '
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
If MsgBox("هل تريد تطبيق التعديل التي قمت بها" & vbNewLine & _
"على البيانات في قاعدة البيانات؟" & vbNewLine & _
"إنتبه: لن تتمكن من استعادة البيانات السابقة", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Using da As New OleDbDataAdapter(sql, conn)
Using builder As New OleDbCommandBuilder(da)
da.Update(myDatatable)
End Using
End Using
' قراءة قاعدة البيانات '
ReadDatabase()
MsgBox("تم تحديث قاعدة البيانات بآخر التعديلات" & vbNewLine & _
"التي تمت على الداتاتابل")
End If
End Sub
End Class

