我使用OleDB访问我的Excel"数据库"。这一切都很精彩。我的Excel文件中有四张纸,它们在技术上有自己的主键等。在我的程序中,我通过OleDB将这四张表复制到DataSet中的四个表中,然后使用LinQ连接表并将它们放入一个表中,我用它来向用户显示内容。用户修改信息,然后按保存。 DataSet已更新,然后我尝试将更改通过OleDB推送到Excel。不幸的是,此时我收到错误,告诉我我没有关键列信息。
据我所知,我还没有明确说明哪些列在我的Excel文件中用作主键。当我将工作表复制到我的DataSet时,我会在那里设置主键。
要点:有没有办法为excel列设置主键?即使它在运行时,也没关系。同样好的方法是告诉OleDB使用我的DataSet上设置的主键。我想要的就是能够使用Commandbuilder。
编辑:这是我正在进行更新的代码。 (我不知道为什么按“代码示例”按钮不能正确排列)
Using MyConnection As New System.Data.OleDb.OleDbConnection(connectionString)
For Each query In bidSummaryQueries
Try
MyCommand = New System.Data.OleDb.OleDbDataAdapter(query(1), MyConnection)
Catch ex As Exception
MsgBox(query(0) & " connection failed." & vbCrLf & vbCrLf & ex.Message)
End Try
Dim MyBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(MyCommand)
Try
MyBuilder.GetInsertCommand()
MyBuilder.GetDeleteCommand()
MyBuilder.GetUpdateCommand()
MyCommand.Update(dataset, query(0))
Catch ex As Exception
MsgBox(query(0) & " update failed." & vbCrLf & vbCrLf & ex.Message)
End Try
Next
End Using
bidSummaryQueries是我填充的ArrayList,此时它包含以下内容:
{"ProjectInfo", "SELECT * FROM [ProjectInfo$] WHERE [" & PROJECT & "] <> ''"}
{"ArchitectInfo", "SELECT * FROM [ArchitectInfo$] WHERE [" & ARCHITECT & "] <> ''"}
{"BidInfo", "SELECT * FROM [BidInfo$] WHERE [" & PROJECT & "] <> ''"}
{"ContractorInfo", "SELECT * FROM [ContractorInfo$] WHERE [" & CONTRACTOR & "] <> ''"}
{"ContactInfo", "SELECT * FROM [ContactInfo$] WHERE [" & CONTRACTOR & "] <> ''"}
感谢您的帮助=)