Dobrý den, potřeboval bych poradit s následujícím problémem. Mám DB vytvořenou v Accessu. První pole v tabulce plní funkci ID (primární klíč), které má nastavenou vlastnost Automatické číslo. Problém nastává při následující sekvenci: 1) vložím nový záznam (btnAddNew_Click) 2) uložím (btnSave_Click) 3) vložený záznam smažu (btnDelete_Click) 4) uložím (btnSave_Click) Při posledním uložení nastane chyba: "Narušení souběžného zpracování: Událost DeleteCommand ovlivnila 0 z 1 očekávaných záznamů."
Private m_conn As New OleDb.OleDbConnection()
Private m_da As OleDb.OleDbDataAdapter
Private m_cb As OleDb.OleDbCommandBuilder
Private m_dtKategorie As New DataTable
Private m_rowPosition As Integer = 0
Private Sub frmMain_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
m_conn.Close()
m_conn.Dispose()
End Sub
Private Sub ShowCurrentRecord()
If m_dtKategorie.Rows.Count = 0 Then
txtName.Text = ""
Exit Sub
End If
txtName.Text = m_dtKategorie.Rows(m_rowPosition)("Name").ToString()
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
m_conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Kategorie\Kategorie.mdb"
m_conn.Open()
m_da = New OleDb.OleDbDataAdapter("Select * From Kategorie", m_conn)
m_cb = New OleDb.OleDbCommandBuilder(m_da)
m_da.Fill(m_dtKategorie)
Me.ShowCurrentRecord()
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
If m_dtKategorie.Rows.Count <> 0 Then
m_dtKategorie.Rows(m_rowPosition)("Name") = txtName.Text
m_da.Update(m_dtKategorie)
End If
End Sub
Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click
Dim drNewRow As DataRow = m_dtKategorie.NewRow()
drNewRow("Name") = txtNewContactName.Text
m_dtKategorie.Rows.Add(drNewRow)
m_rowPosition = m_dtKategorie.Rows.Count - 1
Me.ShowCurrentRecord()
End Sub
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
If m_dtKategorie.Rows.Count <> 0 Then
m_dtKategorie.Rows(m_rowPosition).Delete()
m_rowPosition = 0
Me.ShowCurrentRecord()
End If
End Sub
|