tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルOleDbDataAdapter Updateメソッドについて
記事No9255
投稿日: 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コンポーネントを使用した
別スレッドからコールしています。

恐れ入りますが、どなたかご教示願います。

[ツリー表示へ]