タイトル : OleDbDataAdapter Updateメソッドについて 投稿日 : 2009/08/11(Tue) 10:17 投稿者 : みくさわ
VB2005でAccessの更新処理を行っています。 OSはXPです。 VB6.0の経験は長いのですが、.NETは取り組んで半年ほどです。 '定数定義 Private mDataTable1 As DataTable Private mDataTable2 As DataTable 'プロシージャ Private Function WriteFile() As Boolean Dim con As New OleDbConnection(*** データベースへの接続文字列 ***) Dim result As Boolean = False Try con.Open() Using txn As OleDbTransaction = con.BeginTransaction Using da As New OleDbDataAdapter() Dim sql As String ' InsertCommand設定 *** 省略 *** ' UpdateCommand設定 *** 省略 *** ' '''' データ更新 da.Update(???) txn.Commit() End Using End Using result = True Catch ex As Exception Finally con.Dispose() End Try Return result End Function 上記のプロシージャのda.Updateメソッドで OleDbExceptionエラー(インデックス、主キーが重複)が発生します。 確かに主キーは重複しているのですが、UpdateCommand設定の個所で UpdateCommandは設定しています。 また、エラーが発生する条件が以下のコードのように (mDataTable1更新処理) mDataTable2 = mDataTable1.Copy da.Update(???)の???でmDataTable2を使用したときのみ発生します。 (mDataTable1では発生しません。) しかも起動後、一回目のmDataTable2でのUpdate (この段階で主キーが重複するレコードが含まれています。)ではエラーは発生しません。 WriteFileプロシージャは、BackgroundWorkerコンポーネントを使用した 別スレッドからコールしています。 恐れ入りますが、どなたかご教示願います。 |