Duplikate erkennen
Duplikate zum Datensatz im gleichen Formular: Prüfung verbessern
Prüfung verbessern
Auf dieser Seite
Mit Bild
Aber ein Duplikat wird erst erkannt, wenn Kontaktperson und Ort komplett eingegeben wurden. Ein übliches Fehlerpotential in Adressen ist jedoch die Eingabe abweichender Namen, also etwa "Bad Aachen" statt "Aachen" oder "Burtscheid" statt "Aachen-Burtscheid".
Mit Bild
Daher ist es sinnvoll, auch schon nach Teilen des Inhalts während der Eingabe zu suchen. Nutzen Sie dazu den LIKE-Operator und verändern die Suchzeile mit Jokerzeichen wie folgt:
Mit Bild
Private Sub SucheDuplikate(strKontaktperson As String, strOrt As String) Dim lngAnzahl As Long lngAnzahl = DCount("*", "Kunden", "[Kontaktperson] LIKE '*" & strKontaktperson & "*' AND [Ort] LIKE '*" & strOrt & "*'") If lngAnzahl = 0 Then Me.lblDuplikate.Visible = False Else With Me.lblDuplikate .Visible = True .Caption = lngAnzahl & " Duplikate" End With End If End Sub
Mit Bild
Dadurch werden bereits Teile des Inhalts verglichen, da die Joker-Sternchen davor und dahinter stehen. Beim Testen sehen Sie, dass sich die Anzahl der gefundenen Duplikate mit jedem eingegebenen Zeichen verändern kann:
Mit Bild
Es gibt offenbar drei Mal "Maria" in Orten mit "B"
Mit Bild
Was wird gezählt?
Wie Sie in der vorigen Abbildung sehen, gibt es angeblich drei Duplikate. Tatsächlich ist aber der Testdatensatz schon gespeichert worden und wird ebenfalls als Duplikat mitgezählt. Das müssen wir bei Gelegenheit berücksichtigen.
Mit Bild
Sicherlich haben Sie beim Testen bemerkt, dass der Inhalt im geprüften Feld erst editiert werden muss, bevor die Prüfung aktiv wird. Außerdem stehen beim Datensatzwechsel noch die Ergebnisse der vorherigen Prüfung. Lassen Sie also auch im Form_Current-Ereignis (welches der Formular-Eigenschaft Beim Anzeigen entspricht) die Duplikate suchen:
Mit Bild
Private Sub Form_Current() SucheDuplikate Me.Kontaktperson.Value & "", Me.Ort.Value & "" End Sub
Mit Bild
Der vollständige Code im Formular-Modul sieht nun so aus:
Mit Bild
Der vollständige Code im Formular-Modul