Mit Access Daten-Duplikate aufspüren

Ich lese Daten über einen Scanner ein und importiere die Informationen in eine Access-Datenbank. Nun möchte ich die importierten Daten mit den bereits in der Datenbank enthaltenen Daten vergleichen, um mög- liche Duplikate zu erkennen. Leider stimmen die Feldinhalte der importierten Daten nicht ganz mit den Feldern aus der Tabelle überein, etwa: äFritz Müller Weißenbach 13ô und äFritz Müllerô, äWeißenbach 13ô. Wie kann ich trotzdem vergleichen?

Duplikate stellen selbst Datenbank-Profis nicht selten vor Probleme. Am einfachsten sind Duplikate aufzuspüren, wenn die Felder für den Vergleich identische Inhalte aufweisen. Das könnten Sie auch beim Scannen erreichen, indem Sie überflüssige Informationen für das Feld mit einem weißen Blatt Papier abdecken oder später beim Prozeß der Schrifterkennung (OCR) unberücksichtigt lassen. So ließe sich auch beim Scannen nach und nach die gleiche Struktur der Daten wie in der vorhandenen Datenbank nachbilden.
Aber auch bei dem von Ihnen geschilderten Vorgehen können Sie von Access eine Liste der vermeintlich gleichen Datensätze erhalten, die Sie dann überprüfen sollten. Um nach dem Import durch Access die Daten auf mögliche Duplikate untersuchen zu lassen, verwenden Sie eine Abfrage. Diese Abfrage vergleicht die importierten Daten mit den bereits existierenden und schreibt im Falle einer Überein- stimmung eine Kopie beider Datensätze in eine Zieltabelle.
Wenn Sie beispielsweise die importierten Daten in der Tabelle Importiertes in einem Feld namens Sammelsurium halten, das die Struktur äName Straße Wohnortô aufweist, während in der vorhandenen Access-Datenbank Name diese Daten auf mehrere Felder verteilt sind, können Sie die folgende Abfrage verwenden:

SELECT Importiertes.Sammelsurium, Name.Name, Name.Schlüssel INTO Zieltabelle
FROM Importiertes, Name
WHERE (((Trim ([Name]))=Left ( Trim ([Sammelsurium]),Len (Trim ([Name])))));
Der Select-Teil benennt die Felder, die in die Zieltabelle abzubilden sind, und der From-Teil benennt die Quelltabellen. Der Vergleich geschieht dann im Where-Teil der Abfrage. Die Where-Klausel vergleicht den Namen eines bereits existierenden Datensatzes Name mit dem linken Rand des importierten Datensatzes Sammelsurium. Die Länge des zu vergleichenden Namens Len(Name) bestimmt dabei die Breite dieses linken Randes beim Vergleich.
Die Funktion Trim() erhöht die Genauigkeit des Vergleichs, indem sie automatisch alle Leerzeichen entfernt. Häufig erkennt die OCR-Software nach dem Scannen mehrere Leerzeichen zwischen zwei Wörtern. Das liegt meist am gedruckten Blocksatz, der die einzelnen Wörter auseinanderzieht.
Auf diese Weise werden Sie zwar schon viele potentiell doppelte Einträge finden, aber mit Sicherheit nicht alle. Die Fälle von Schreibfehlern wie bei äMeyerô und äMayerô oder fehlender Einheitlichkeit wie bei äErnst-Uwe Winterô und äErnst Uwe Winterô oder äErnst U. Winterô entgehen Ihnen immer noch. Um auch diese Duplikate zu finden, benötigen Sie eine detaillierte Kenntnis Ihres Datenbestands und ein darauf abgestimmtes, datenspezifisches Vorgehen.