Duplikate suchen und löschen

Alle Jahre wieder bekommt es der gemeine Access-Entwickler mit einem Rutsch frischer inkonsistenter Daten zu tun, die es auseinanderzupflücken gilt. Wo war also nochmal die Abfrage zum Auffinden und Löschen der doppelten Daten Falls diese nicht zur Hand ist oder Sie so etwas noch gar nicht im Repertoire haben, finden Sie in diesem Beitrag alles zum Thema Duplikate in Access-Tabellen.

Doppelte Datensätze und doppelte Felder haben in einer relationalen Datenbank nichts zu suchen. Sie führen immer zu Fehlern und müssen daher dringend eliminiert werden.

Viele der potenziellen Probleme lassen sich zwar durch ein gutes Datenmodell von vornherein ausschließen, einige Fehlerquellen sind sich jedoch nicht so einfach auszuschalten.

Wenn beispielsweise mehrere Mitarbeiter einer Firma kontinuierlich Kundendaten und Bestellungen erfassen, dann treten geradezu zwangsläufig Datenduplikate auf.

Das typische Beispiel ist die Aufnahme einer telefonischen Bestellung für einen Kunden. Manchmal vergisst der Mitarbeiter nachzusehen, ob der Kunde vielleicht schon angelegt ist – und schon ist derselbe Kunde zweimal in der Datenbank enthalten.

Das kann schwerwiegende Folgen haben. Wenn der Kunde beispielsweise die Rechnung zur ersten Bestellung auch nach der dritten Mahnung noch nicht bezahlt hat, dann sollte er eigentlich nicht mehr oder nur gegen Vorkasse beliefert werden. Ein Datenbanksystem, das für diesen Fall geeignete Vorkehrungen trifft, kann erhebliche Zahlungsausfälle vermeiden.

Aber auch jede Umsatzauswertung, Rabattberechnung und Akquisemaßnahme ist fehlerträchtig, wenn die Daten eines Kunden auf mehrere zusammenhanglose Datensätze verteilt sind.

Da sich Duplikate einerseits nicht vermeiden lassen, sie andererseits aber zu schwerwiegenden Problemen führen können, sollten Sie sich angewöhnen, die in einer Datenbank gespeicherten Daten in regelmäßigen Abständen zu untersuchen.

Die folgenden Abschnitte beschreiben, wie Sie Ihre Daten nach Duplikaten durchforsten und diese gegebenenfalls löschen können.

Duplikate per Assistent suchen

Für die Suche nach Duplikaten ist eine Auswahlabfrage mit Gruppierungen bestens geeignet. Access verfügt über einen Abfrage-Assistenten, mit dem Sie solche Abfragen komfortabel anlegen können.

Wir zeigen die Funktionsweise des Assistenten anhand der Tabelle tblKunden aus der Beispieldatenbank.

Um den Assistenten zu starten, gehen Sie wie folgt vor:

  • Aktivieren Sie das Datenbankfenster.
  • Wählen Sie den Befehl Einfügen|Abfrage aus der Menüleiste (bis Access 2003) beziehungsweise den Ribboneintrag Erstellen|Andere|Abfrage-Assistent.
  • Führen Sie einen Doppelklick auf dem Eintrag Abfrage-Assistent zur Duplikatsuche durch, damit Access den Assistenten startet (siehe Bild 1).
  • Markieren Sie auf der ersten Dialogseite die Tabelle tblKunden, in der nach Duplikaten gesucht werden soll (siehe Bild 2).
  • Klicken Sie auf die Schaltfläche Weiter.

Auf der zweiten Dialogseite zeigt der Assistent eine Liste der Felder der Kundentabelle an. Wählen Sie in diesem Dialog das Feld aus, das der Assistent nach Duplikaten durchsuchen soll (siehe Bild 3).

pic001.tif

Bild 1: Starten des Assistenten zur Duplikatsuche

pic002.tif

Bild 2: Legen Sie auf der ersten Dialogseite fest, welche Tabelle auf Duplikate untersucht werden soll.

pic003.tif

Bild 3: In diesem Dialog wählen Sie die Felder aus, die der Assistent auf Duplikate untersuchen soll.

Wenn Sie mehr als ein Feld auswählen, dann reiht Access die Felder aneinander und ermittelt nur dann Duplikate, wenn sich die Werte in allen Feldern wiederholen. Sie könnten beispielsweise die Felder Firma und Kontaktperson auswählen, um nach Wiederholungen einer Kontaktperson in der gleichen Firma zu suchen. Wenn eine Kontaktperson zwar mehrfach, aber in verschiedenen Firmen vorkommt, dann würde Access dies richtigerweise nicht als Duplikat melden.

Dieser Zusammenhang ist darauf zurückzuführen, dass der Assistent eine Abfrage mit Gruppierungen erstellt. Er gruppiert nach allen Feldern, die Sie auf der zweiten Dialogseite ausgewählt haben. Für das Beispiel wählen Sie zunächst nur das Feld Firma aus.

Nach einem Klick auf die Schaltfläche Weiter zeigt der Assistent auf der dritten Dialogseite eine Liste mit den noch verbliebenen Feldern an. Hier wählen Sie die Felder aus, in denen zwar nicht nach Duplikaten gesucht werden soll, die Sie aber trotzdem im Abfrageergebnis sehen möchten (siehe Bild 4).

pic005.tif

Bild 4: Wenn Sie auf der dritten Dialogseite keine Felder auswählen, dann enthält das Abfrageergebnis die Anzahl der Wiederholungen einer Firma.

Wenn Sie hier keine Felder auswählen, dann zeigt Access im Abfrageergebnis nur die Firmen und die Anzahl der Duplikate an. Bei der Anzeige zusätzlicher Felder wiederholt Access die Anzeige der Firma und blendet zusätzlich die weiteren Felder ein (siehe Bild 5).

pic006.tif

Bild 5: Dieses Abfrageergebnis zeigt jede Firma so oft an, wie Wiederholungen in der zugrunde liegenden Tabelle gespeichert sind. Außerdem sehen Sie die Felder, die auf der dritten Dialogseite des Assistenten ausgewählt wurden.

Auf der letzten Dialogseite des Assistenten können Sie einen Namen für die Auswahlabfrage zur Duplikatsuche eingeben. Außerdem können Sie die Abfrage in der Datenblatt- oder der Entwurfsansicht anzeigen lassen.

Schauen Sie sich die vom Assistenten zur Duplikatsuche generierten Abfragen ruhig einmal in der Entwurfsansicht an. Sie können so einiges über das Gruppieren von Daten in Auswahlabfragen lernen.

Duplikate löschen

Die Suche nach Duplikaten ist nur die halbe Arbeit. Wenn Sie Duplikate gefunden haben, dann benötigen Sie eine Strategie für den Umgang mit ihnen.

Sollte die untersuchte Tabelle eine Mastertabelle innerhalb einer 1:n-Beziehung sein, dann müssen Sie zunächst die verknüpfte Datensätze bearbeiten. In der Regel werden Sie sie per Aktualisierungsabfrage mit einem der gefundenen Duplikate verknüpfen.

So können Sie beispielsweise das Problem der eingangs erwähnten Bestellungen lösen. Wählen Sie zunächst ein Exemplar der mehrfach vorkommenden Kundendaten aus und ordnen Sie diesem Datensatz alle verknüpften Bestellungen zu. Anschließend können Sie alle anderen Duplikate des Kundendatensatzes löschen.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar