我已经非常努力地解决我的问题,这就是我想要做的:
- 我有一个 XML 文件,我使用 加载到数据集(“ds”)中
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”还有其他的,这似乎至少不会导致导入行出现问题。
请问有什么想法吗?