0

私は自分の問題を解決するために一生懸命努力しました。これが私がやろうとしていることです:

  • を使用してデータセット ("ds") に読み込む XML ファイルがありReadXML、いくつかのテーブルがデータセットに取り込まれます。私が懸念しているのは ("SalesReceiptRet") であり、それをソースとして参照します。テーブル。
  • MS Access データベースに別のテーブルがあり、それを
    を使用して同じデータセットにロードしOleDBAdapter.Fill、("dtTarget") という名前のデータテーブルにロードします。アダプターの名前は ("dbAdapter") です。

ソース テーブル内のすべてのレコードを調べて、("TxnID") というフィールドを検索して、ターゲット テーブル内のレコードを見つけたいと考えています。存在しない場合は追加し、存在する場合は別の検証を行い、ソースの行を使用して上書き/更新します。

コードは次のとおりです。

Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
    'Initialize command builder
    Dim dbCommandBuilder As New OleDb.OleDbCommandBuilder(dbAdapter)

    'Set the primary keys
    ds.Tables("dtTarget").PrimaryKey = New DataColumn() {ds.Tables("dtTarget").Columns("TxnID")}

    'Find rows
    Dim dr As DataRow
    Dim lookupRow As DataRow

    For Each dr In ds.Tables("SalesReceiptRet").Rows

        lookupRow = ds.Tables("dtTarget").Rows.Find(dr.Item(0))
        'If the a row with a similar TxnID exists, do the following validation
        If Not (lookupRow Is Nothing) Then
            If lookupRow.Item(8).ToString <> "Regular" Then
                'do something here to overwrite/update the matching row
            End If
        Else
            'If the row does not exist, import it
            ds.Tables("dtTarget").ImportRow(dr)
        End If

    Next

    'Update Access
    dbAdapter.Update(ds, "dtTarget")
    dbConnection.Close()


End Sub

おそらく、両方のテーブルに正確な列名があることを言及する必要があるかもしれませんが、Access の「dtTarget」には追加の列名があり、少なくともインポート行では問題が発生していないようです。

何か考えはありますか?

4

1 に答える 1