Sie können Recordsets verwenden, aber wenn Ihre Tabellen lang sind, kann dies eine Weile dauern. Dies ist absolut nicht optimiert, aber wenn man bedenkt, wie wenig Information Sie zur Verfügung gestellt haben, möchte ich nicht viel Zeit investieren.
Ich nehme an, Ihre Tabellen sind identisch in der Struktur, identisch sortiert und haben die gleiche Anzahl von Datensätzen. Wenn nicht, dann kannst du das anpassen, wie du es für richtig hältst, aber du solltest in der Lage sein, sich ein Bild von dem zu machen, was ich mache.
Es wird die Feld- und Zeilennummer von Table1
im unmittelbaren Fenster ausgegeben, wenn eine Abweichung gefunden wird. Sie könnten es auch in eine temporäre Tabelle einfügen, wenn Sie alle Feldwerte wiederherstellen möchten, aber ich möchte auch nicht so weit gehen. Dies hat also Einschränkungen:
Public Function FindMisMatches(Table1 As String, Table2 As String)
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim i As Integer
Dim Row As Integer
On Error GoTo PROC_ERR
Set db = CurrentDb
Set rs1 = db.OpenRecordset(Table1, dbOpenSnapshot, dbReadOnly)
Set rs2 = db.OpenRecordset(Table2, dbOpenSnapshot, dbReadOnly)
rs1.MoveFirst
rs2.MoveFirst
Row = 1
Do Until rs1.EOF Or rs2.EOF
'Assuming both tables have identical structure
For i = 1 To rs1.Fields.Count - 1
If rs1.Fields(i).Value <> rs2.Fields(i).Value Then
Debug.Print "Mismatch in field " & rs1.Fields(i).Name & " on row " & Row
End If
Next i
rs1.MoveNext
rs2.MoveNext
Row = Row + 1
Loop
Debug.Print "End of recordset"
Set rs1 = Nothing
Set rs2 = Nothing
Set db = Nothing
Exit Function
PROC_ERR:
MsgBox "Error: " & Err.Number & "; " & Err.Description
Set rs1 = Nothing
Set rs2 = Nothing
Set db = Nothing
End Function
Suchen Sie nach SQL-Abfrage, die die Ausgabe von nicht übereinstimmenden Wert in zwei verschiedenen Tabellen richtig zurückgibt. – Object
Ja genau und neuen Ausdruck hinzufügen, in welchem Feld gibt es nicht übereinstimmende Daten – Mahmoud
Es gibt eine Menge Felder in jeder Tabelle (mehr als 30 Feld), wie kann behandelt werden? – Mahmoud