0

在加载表单时,我使用以下代码填充数据集:

Con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Congress.accdb;Persist Security Info=False"
Con.Open()

dAp1 = New OleDbDataAdapter("Select * from VotingRecords", Con)
DS.Tables.Add("VotingRecords")
dAp1.Fill(DS.Tables("VotingRecords"))

BindingNavigator1.BindingSource = myBS
myBS.DataSource = DS.Tables("VotingRecords")

Me.BillComboBox.DataBindings.Add(New Binding("Text", myBS, "BillNumber", True))
Me.CongressPersonComboBox.DataBindings.Add(New Binding("Text", myBS, "CID", True))
Me.VoteComboBox.DataBindings.Add(New Binding("Text", myBS, "Vote", True))

这里所有的 Con、dAP1、DS、myBS 变量都是全局或表单级变量。

单击保存按钮时:

Try
    myBS.EndEdit()
    dAp1.Update(DS.Tables("VotingRecords"))
Catch ex As Exception
    MsgBox("Error")
End Try

不知道为什么它向我显示错误;错误信息:

当传递带有修改行的 DataRow 集合时,更新需要有效的 UpdateCommand。

4

2 回答 2

0

您需要UpdateCommandOleDbDataAdapter.

dAp1 = New OleDbDataAdapter("Select * from VotingRecords", Con)
dAp1.UpdateCommand = new OleDbCommand("UPDATE VotingRecords SET Column1 = ?, Column2 = ? WHERE Column3 = ?")
dAp1.UpdateCommand.Parameters.Add("Column1", column1OleDbType, column1Length, "Column1")
dAp1.UpdateCommand.Parameters.Add("Column2", column2OleDbType, column2Length, "Column2")
dAp1.UpdateCommand.Parameters.Add("Column3", column3OleDbType, column3Length, "Column3")
dAp1.UpdateCommand.Parameters("Column3").SourceVerion = DataRowVersion.Original

文档:http: //msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.updatecommand.aspx

于 2012-11-27T09:30:24.857 回答
0

得到它的工作......感谢
http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update.aspx

它是我缺少的命令生成器

于 2012-11-27T09:52:44.783 回答