- 締切済み
VB.NET LoadDataRowでDBデータの更新ができない
VB.NETですが、 DataSet.Tables(0).LoadDataRow()でデータの更新をしたいのですが DBに登録されません。なぜでしょうか 以下の手順の処理で問題があるのでしょうか? 以下ソース pAddUpdList(0) = "2" pAddUpdList(1) = "2" pAddUpdList(2) = "col1data" pAddUpdList(3) = "col2data" f(ここでwDataSet.Tables(0)のプライマリーキーの設定処理) wDataSet.Tables(0).BeginLoadData() Dim myRow As DataRow myRow = wDataSet.Tables(0).LoadDataRow(pAddUpdList, True) wDataSet.Tables(0).EndLoadData() ' ここの時点でwDataSetはちゃんと更新されているのですが f(ここでOleDbDataAdapter.Update(wDataSet):DBアップデート処理) 'しかしDBに反映されてない ------ LoadDataRowでネットを検索してみたのですが、ヒットするものがあまりありません。 サンプルなどがあれば教えていただきたいのですが。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- AlexSuns
- ベストアンサー率67% (78/115)
回答No.1
OleDbDataAdapterの"UpdateCommand"プロパティは設定されていますか?
お礼
myRow = wDataSet.Tables(0).LoadDataRow(pAddUpdList, True) のところを myRow = wDataSet.Tables(0).LoadDataRow(pAddUpdList, False) に変えるだけで更新できてしまったのですが、MSDNをみると、 変更を受け入れる場合は true 。それ以外の場合は false 。 と書いてあるのでFalseにすると変更されないのかと思っていましたが・・・、myRow.RowStateがModifiedになってうまくUpdateされてしまいます。なぜなんでしょうか?説明できる方お願いいたします。
補足
"UpdateCommand"プロパティはNothingです。 更新処理は Dim Adapter As OleDbDataAdapter = New OleDbDataAdapter(SQL文, New OleDbConnection(コネクション文字列)) Dim SQLBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(Adapter) Adapter.Update(DataSet) というような感じです。New OleDbCommandBuilderが利いてるんじゃないかと思うのですが。