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

UpdateCommandにプロパティを設定する必要がありますOleDbDataAdapter

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 に答える