Visual Studio - 多个表到多个DataGridView与MS Access

时间:2016-01-31 09:57:34

标签: vb.net visual-studio-2010 ms-access datagridview

如何将多个table填充到多个DataGridview中? 例如,我有3个表table1table2table3,在我的表单中我有3个dataGridView,名称为dataGridView1dataGridView2和{ {1}}。由于我的代码,我找到了这个解决方案Updating an Access Database via a DataGridView Using OLEDB in VB.NET

function loadDatabaseDataToGridView

dataGridView3

功能SaveChanges

Dim msAccessFilePath As String
Dim con As New OleDbConnection
Dim dataTable, dataTable2, dataTable3, dataTable4 As New DataTable
Dim olebDataAdapter As New OleDbDataAdapter
Dim da As New OleDbDataAdapter
Dim dataSet As New DataSet

Private Sub loadDatabaseDataToGridView()
        Try
            con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & msAccessFilePath
            dataSet.Tables.Add(dataTable)

            olebDataAdapter = New OleDbDataAdapter("Select * from table1", con)
            olebDataAdapter.Fill(dataTable)
            olebDataAdapter = New OleDbDataAdapter("Select * from table2", con)
            olebDataAdapter.Fill(dataTable2)
            olebDataAdapter = New OleDbDataAdapter("Select * from table3", con)
            olebDataAdapter.Fill(dataTable3)

            DataGridView1.DataSource = dataTable.DefaultView
            DataGridView2.DataSource = dataTable2.DefaultView
            DataGridView3.DataSource = dataTable3.DefaultView

            Dim cb = New OleDbCommandBuilder(olebDataAdapter)
            cb.QuotePrefix = "["
            cb.QuoteSuffix = "]"
            MessageBox.Show("Successfull")

        Catch ex As Exception
            MessageBox.Show("Failed")
            con.Close()
        End Try
        con.Close()
    End Sub

此代码正常工作,它正在填充数据'Perform this on Button Save is Click Private Sub saveChanges() olebDataAdapter.Update(dataSet) End Sub 但是当我单击按钮保存以保存对已编辑数据的更改时,发生了错误。

错误:

from MS Access file

任何人都知道如何正确实现我想要实现的目标?非常感谢!!!

1 个答案:

答案 0 :(得分:0)

每个DataAdapter对象只有一个UpdateCommand,因此每个数据表都需要一个。如果它运行更新命令并且没有更新行(因为更新命令实际上是针对您尚未更改的表),那么您将获得并发违规。

如果你的表是相关的,那么它实际上要比这更复杂,因为插入,更新和删除的顺序可能是关键的。

如果您创建一个强类型数据集,它将生成包含TableAdapterManager类和所有必需数据适配器的设计器代码。可能值得玩这个,以便您可以看到生成的代码是如何工作的。

只需注意,并发违规行为'实际存在异常,因此您可以设计一个更新命令,只有当数据库中记录的内容与本地保存的数据匹配时才会成功(以防止您覆盖其他用户的更改)。搜索乐观锁定以获取更多详细信息。