【发布时间】:2016-01-31 09:57:34
【问题描述】:
如何将多个table 填充到多个DataGridview 中?
例如,我有 3 个表,分别是 table1、table2 和 table3,在我的表单中,我有 3 个名为 dataGridView1、dataGridView2 和 dataGridView3 的 dataGridView。由于我的代码,我找到了这个解决方案Updating an Access Database via a DataGridView Using OLEDB in VB.NET。
函数 loadDatabaseDataToGridView
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
函数 SaveChanges
'Perform this on Button Save is Click
Private Sub saveChanges()
olebDataAdapter.Update(dataSet)
End Sub
此代码按预期工作,它正在填充数据from MS Access file,但是当我单击按钮保存以保存对已编辑数据的更改时,发生了错误。
错误:
Concurrency violation: the UpdateCommand affected 0 of the expected 1 records
任何人都知道如何正确实现我想要实现的目标?非常感谢!!!
【问题讨论】:
-
为每个表创建一个新的 OleDbDataAdapter 实例将导致一个仅适用于最后一个表的更新命令。你能补充一下收到的错误信息是什么吗?
-
我已经更新了我的问题,请检查。谢谢!
-
嗯,这个错误似乎与您正在使用的文件有关。您是否在相关表的设计视图中打开了访问权限?
标签: vb.net visual-studio-2010 ms-access datagridview