私は自分の問題を解決するために一生懸命努力しました。これが私がやろうとしていることです:
- を使用してデータセット ("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」には追加の列名があり、少なくともインポート行では問題が発生していないようです。
何か考えはありますか?