タイトル | : OleDbDataAdapter Updateメソッドについて |
記事No | : 9255 |
投稿日 | : 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コンポーネントを使用した 別スレッドからコールしています。
恐れ入りますが、どなたかご教示願います。
|