簡體   English   中英

MSAccess:區分兩個表?

[英]MSAccess: Diff Two Tables?

我有一個任務來比較2個MSAccess表。 它們的結構相同,來自第三方數據源的兩次連續導出,相隔1個月(n和n + 1)。 10K記錄,35個字段。

我不必知道哪個字段已更新,僅是記錄中發生了更改。 然后,我的進程將繼續相應地處理目標數據庫中的增量記錄。

我已經在n + 1數據中標識了插入和刪除。 這將是每月一次的練習。

對開始這項任務有什么建議嗎? 我寧願不比較逐字段,逐行。 也許相當於〜校驗和?

謝謝!

根據Erik的建議(上文),我可以確認逐個字段,逐行地遍歷表並執行比較非常快。 10K行x 33場= 1-2秒

我需要進行的一項調整是考慮n或n + 1表中插入或丟失的行。 我只是在[ID]上加入了2個表,消除了所有未對齊的情況,然后逐步遍歷了結果記錄集,比較了兩對列。

Private Sub Command0_Click()

Dim strSQL As String
Dim rs As DAO.Recordset
Dim n, i, j As Integer

' Join the 2 tables into a single recordset, side-by-side

strSQL = "SELECT TestData.*, TestData2.* FROM TestData " & _
    "INNER JOIN TestData2 ON TestData.[ID] = TestData2.[ID];"

Set rs = CurrentDb.OpenRecordset(strSQL)

'column-by-column, row-by-row, compare pairs of columns

n = rs.Fields.Count / 2

For i = 0 To n-1
    j = i + n
    If Not rs.BOF And Not rs.EOF Then
        rs.MoveFirst
        While (Not rs.EOF)
            If Not (Nz(rs.Fields(i)) = Nz(rs.Fields(j))) Then
               Debug.Print "ID " & rs.Fields(0) & " | " & rs.Fields(i).Name & " | " & rs.Fields(i) & " <> " & rs.Fields(j)
            End If
            rs.MoveNext
        Wend
    End If
    rs.MoveFirst
Next i

MsgBox "all done"

rs.Close
Set rs = Nothing

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM