الأخوة الكرام
السلام عليكم ورحمة الله وبركاته
قمت بتطبيق درس من احدى الكتب المعربة خطوة بخطوة وهو عبارة عن ربط برنامج vb.net 2005 بقاعدة بيانات اكسس، ولكن يظهر لي خطأ عند تشغيل البرنامج عند محاولة إضافة سجل جديد أو تعديل السجل الحالي أو الحذف، البرنامج الذي قمت بتطبيقه يحوي فورم واحد والجدول في قاعدة البيانات به عمودين فقط، الكود الكامل للبرنامج هو:
Private m_cnADONetConnection As New OleDb.OleDbConnection()
Private m_daDataAdapter As New OleDb.OleDbDataAdapter
Private m_cbCommandBuilder As OleDb.OleDbCommandBuilder
Private test1 As New DataTable
Private m_rowPosition As Integer = 0
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
m_cnADONetConnection.Close()
m_cnADONetConnection.Dispose()
End Sub
Private Sub ShowCurrentRecord()
If test1.Rows.Count = 0 Then
name1.Text = ""
no.Text = ""
Exit Sub
End If
name1.Text = _
test1.Rows(m_rowPosition)("name1").ToString()
no.Text = _
test1.Rows(m_rowPosition)("no").ToString()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
m_cnADONetConnection.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\test.mdb"
m_cnADONetConnection.Open()
m_daDataAdapter = _
New OleDb.OleDbDataAdapter("Select * From test1", m_cnADONetConnection)
m_cbCommandBuilder = New OleDb.OleDbCommandBuilder(m_daDataAdapter)
m_daDataAdapter.Fill(test1)
Me.ShowCurrentRecord()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
m_rowPosition = 0
Me.ShowCurrentRecord()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If m_rowPosition > 0 Then
m_rowPosition = m_rowPosition - 1
Me.ShowCurrentRecord()
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If m_rowPosition < (test1.Rows.Count - 1) Then
m_rowPosition = m_rowPosition + 1
Me.ShowCurrentRecord()
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
If test1.Rows.Count > 0 Then
m_rowPosition = test1.Rows.Count - 1
Me.ShowCurrentRecord()
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
If test1.Rows.Count <> 0 Then
test1.Rows(m_rowPosition)("name1") = name1.Text
test1.Rows(m_rowPosition)("no") = no.Text
m_daDataAdapter.Update(test1)
End If
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim drNewRow As DataRow = test1.NewRow
drNewRow("name1") = TextBox3.Text
drNewRow("no") = TextBox4.Text
test1.Rows.Add(drNewRow)
m_daDataAdapter.Update(test1)
m_rowPosition = test1.Rows.Count - 1
Me.ShowCurrentRecord()
End Sub
End Class
Public Class Form1
ملاحظات:
- تم الإتصال بالقاعدة بشكل صحيح وعرضت محتويات الجدول في الفورم
- أزرار التنقل بين السجلات تعمل دون مشكلة
- هناك مشكلة في كود الإضافة والتعديل والحذف حيث أنه عند تشغيل البرنامج ومحاولة إضافة سجل جديد أو تعديل السجل الحالي أو حذفه يحدد لي الأمر التالي في الكود باللون الأصفر:
m_daDataAdapter.Update(test1)
أتمنى المساعدة من أحد الأخوة فأنا مبتدئ في البرمجة والأن اقوم بعمل مشروع لاحدى المواد في الجامعة.
شكرا لكم