2012-04-04 18 views
0

2つのMS ACCESS 2007データベースを比較するにはどうすればよいですか。両方のデータベース間でレコード値を比較する必要があります値。2つのアクセスデータベースを比較してデータベースレコードを比較する方法

      ACCESS 2007 Database1         

      serial no.  | NAME   | ADDRESS     
       1    smith   street 1         
       2    john   street 4         
       3    alix   street 8     


          ACCESS 2007 Database2 

       serial no.| NAME  | ADDRESS 
       1   smith  street 1    
       2   jhn  stret 4    
       3   alix  street 8 

シリアル番号2のレコードと同様に、レコードの差異を検出できるmsアクセス用のVBAコードが必要です。

答えて

0

最初にすべきことは、テーブルの1つを他のデータベースにリンクすることです(データベース2のテーブルをデータベース1にリンクするなど)。この単純な例を連結で使用してすべてのフィールドは、シリアル番号に基づいて試合をつなぎ合わせた場合:あなたが好む場合

SELECT T1.*, T2.* 
FROM Table1 As T1, Table2 As T2 
WHERE T2.[serial no.] = T1.[serial no.] 
AND T2.[NAME] & T2.[ADDRESS] <> T1.[NAME] & T1.[ADDRESS] 

また、自分の状態のそれぞれの列を指定することができます。 注:これは、シリアル番号が一致しない部分のみを探していることを前提としています。一方の表に表示される可能性のあるレコードを識別する必要がある場合は、「一致していない」クエリ、クエリーデザイナーがこれを手伝ったりポストバックしたりできます。私は自分の答えを更新できます。

0
Option Compare Database 

Private Sub Command4_Click() 

Dim tablename1, tablename2 As String 
tablename1 = Text0.Value 
tablename2 = Text2.Value 

'On Error GoTo Err_cmdValidateGeneralInfo_Click 
Dim F As DAO.Field 
Dim rs As DAO.Recordset 
Dim rs1 As DAO.Recordset 
Set curDB = CurrentDb() 
'If Me.DateModified = Date Then 
    'Adds new employees to the TT_GeneralInfo table in the FTEI_PhoneBook.mdb - which is used thru out the AP databases. 
' DoCmd.OpenQuery "qryEmpData_TT_General" 

strsql = "Select * from " & tablename1 

Set rs = curDB.OpenRecordset(strsql) 

strsql1 = "Select * from " & tablename2 

    DoCmd.CopyObject , "Unmatched_records", acTable, tablename1 
    curDB.Execute "DELETE FROM Unmatched_records" 

Set rs1 = curDB.OpenRecordset(strsql1) 
    Do Until rs.EOF 
     For Each F In rs.Fields 
     If rs.Fields(F.Name) <> rs1.Fields(F.Name) Then 
      'rs.Edit 
      strsql = "Select * into test from " & tablename1 & " where " & F.Name & " = """ & rs.Fields(F.Name) & """" 
      DoCmd.RunSQL strsql 

      If DCount(F.Name, "test") <> 0 Then 
      GoTo append_unmatch 

      'appending unmacthed records 
append_unmatch: 

      strsql2 = "insert into Unmatched_records Select * from test" 
      DoCmd.RunSQL strsql2 

      'if record doesnt match move to next one 
      GoTo Nextrecord 
      End If 
     ' rs.Fields(F.Name) = rs1.Fields(F.Name) 
     ' rs.Update 
     End If 
     Next F 

Nextrecord: 
rs.MoveNext 
rs1.MoveNext 
    Loop 

    'To check whether tables matched or not 
    Dim rs2 As DAO.Recordset 
    strsql3 = "select * from Unmatched_records" 
    Set rs2 = curDB.OpenRecordset(strsql3) 
    For Each F In rs2.Fields 
    If DCount(F.Name, "Unmatched_records") <> 0 Then 
    MsgBox ("The two tables didnt match. Check table test for unmatching reocrds.") 
    Else 
    MsgBox ("Tables match!") 
    End If 
Exit Sub 
    Next F 
    rs2.Close 


    End Sub 
+2

コードスニペットは質問に答えることができますが、説明などのようにいくつかの追加情報を追加することはまだ素晴らしいです。 – j0k

関連する問題