Wenn man lange genug mit einer Datenbank arbeitet, legt man früher oder später einen Datensatz mit redundanten Daten an. Ob es sich um einen Kunden handelt, der zum zweiten Mal in der Kunden-Tabelle erscheint oder um eine Kategorie in der Kategorientabelle – schützen können Sie sich davor nur durch das Festlegen entsprechender eindeutiger Indizes. Diese sorgen für die Meldung eines Fehlers, wenn jemand versucht, das oder die betroffenen Felder eines neuen Datensatzes mit bereits vorhandenen Daten zu füllen. Manchmal vergisst man das jedoch. Dann lautet die Aufgabe: Duplikate finden! Wie das gelingt, zeigt der vorliegende Artikel.
Beispieldatenbank “Duplikate finden”
Die Beispiele dieses Artikels finden Sie in der Datenbank 2101_DuplikateFinden.accdb.
Duplikate finden: Welche Arten von Duplikaten gibt es
Grundsätzlich sprechen wir von Duplikaten, die nur ein einziges Feld betreffen oder solche, die sich auf mehrere Felder beziehen. Ein Beispiel für Duplikate bezogen auf ein einziges Feld ist etwa die Suche nach doppelten Einträgen im Feld Kategoriename in einer Tabelle namens tblKategorien.
Ein Beispiel für doppelte Einträge mit mehreren betroffenen Feldern ist die Suche nach Duplikaten in einer Adressenliste nach allen Einträgen, bei denen die Felder Vorname und Nachname übereinstimmen – oder gar noch mehr Felder wie zusätzlich das Feld mit der E-Mail-Adresse.
Duplikate finden per Abfrage
Die beste und einfachste Art, eine Tabelle einer Access-Datenbank nach bestimmten Daten zu durchsuchen, ist eine Abfrage.
Wenn wir wie im obigen Beispiel angegeben eine Tabelle namens tblKategorien nach doppelten Einträgen im Feld Kategoriename durchsuchen wollen, haben wir verschiedene Möglichkeiten, zum Beispiel diese:
- Duplikate finden mit einer per Assistent erstellten Abfrage
- Duplikate finden mit einer manuell erstellten Abfrage
Unsere Absicht ist es, Sie mit dem Wissen auszustatten, alle Elemente Ihrer Datenbankanwendung manuell zu erstellen, damit Sie auch wissen, wie Sie diese notfalls anpassen können.
Zu Beispielzwecken haben wir zunächst eine Tabelle namens tblKategorien mit zwei doppelten Kategorienamen erstellt (siehe Bild 1).
Bild 1: Kategorien-Tabelle mit zwei doppelten Kategorien
Duplikate finden per Abfrage-Assistent
Die erste Möglichkeit starten Sie über den Ribbon-Eintrag Erstellen|Abfragen|Abfrage-Assistent. Dies zeigt den Dialog Neue Abfrage an, der unter anderem den Eintrag Abfrage-Assistent zur Duplikatsuche anbietet (siehe Bild 2).
Bild 2: Aufruf des Abfrage-Assistenten zur Duplikatsuche
Klicken Sie diesen Eintrag an und betätigen anschließend die OK-Schaltfläche, erscheint der Abfrage-Assistent zur Duplikatsuche. Dieser fragt auf der ersten Seite nach der Tabelle, die nach Duplikaten durchsucht werden soll (siehe Bild 3).
Bild 3: Auswahl der zu untersuchenden Tabelle
Hier wählen wir die Tabelle tblKategorien aus. Im nächsten Schritt fragt der Assistent dann nach den Feldern, die Sie nach doppelten Werten untersuchen möchten. Die Auswahl ist in diesem Fall einfach – es geht um das Feld Kategoriename (siehe Bild 4).
Bild 4: Auswahl des zu untersuchenden Feldes
Den folgenden Schritt können wir bei diesem Beispiel auslassen. Schließlich geben Sie im letzten Schritt an, unter welchem Namen die zu erstellende Abfrage gespeichert werden soll. Wir wählen den Namen qryDoppelteKategorien.
Außerdem können wir hier noch festlegen, ob wir zunächst die Ergebnisse anzeigen wollen, was der Datenblattansicht der Abfrage entspricht, oder die Entwurfsansicht (siehe Bild 5).
Bild 5: Abschließende Informationen für die Duplikatsuche
Mit einem Klick auf die Schaltfläche Fertig stellen schließen wir den Assistenten ab und erhalten das Ergebnis der Abfrage in der Datenblattansicht (siehe Bild 6).
Bild 6: Duplikate finden per Abfrage
Das Ergebnis ist korrekt – die beiden doppelten Kategorien erscheinen im Ergebnis mit der Angabe der Anzahl der Duplikate.
Details der Abfrage zum Duplikate finden
Nun möchten wir noch wissen, wie eine solche Abfrage funktioniert. Das kann allein schon interessant sein, wenn Sie solche Abfragen dynamisch per VBA erstellen wollen oder schlicht keinen Assistenten nutzen möchten.
Also wechseln wir zur Entwurfsansicht der Abfrage und erhalten den Entwurf aus Bild 7.
Bild 7: Die Abfrage zum Finden von Duplikaten in der Entwurfsansicht
Die Abfrage enthält drei Felder. Bevor wir uns diese anschauen, erkennen wir, dass die Spalte Funktion im Entwurfsraster eingeblendet ist. Das bedeutet, dass die Abfrage mit Gruppierungen arbeitet. Die Gruppierung erfolgt nach dem Feld Kategoriebezeichnung. Dies ist in der dritten Spalte der Abfrage festgelegt. Das Ergebnis dieser Spalte wird gleichzeitig ausgeblendet.
Die erste Spalte der Abfrage zeigt den ersten Wert des Feldes Kategoriebezeichnung einer Gruppierung an, daher steht in der Zeile Funktion der Wert ErsterWert.
Die zweite Spalte zählt die Datensätze der Gruppierung. Dazu enthält die Zeile Funktion den Wert Anzahl. Für diese Spalte ist außerdem ein Kriterium festgelegt, und zwar >1. Dies bewirkt, dass nur solche Gruppierungen angezeigt werden, die mehr als einen Datensatz enthalten.
Duplikate finden per benutzerdefinierter Abfrage
Welche Schritte sind nötig, um eine solche Abfrage manuell zu erstellen Als Erstes legen Sie mit dem Ribbon-Befehl Erstellen|Abfragen|Abfrageentwurf eine neue, leere Abfrage in der Entwurfsansicht an.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: