Duplikate erkennen

Duplikate zum Datensatz im gleichen Formular: Prüfung verbessern

∅ 4 / 1 Bewertungen

Prüfung verbessern

Auf dieser Seite

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".

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:

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

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:

65324_kunden05-png

Es gibt offenbar drei Mal "Maria" in Orten mit "B"

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.

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:

Private Sub Form_Current()
    SucheDuplikate Me.Kontaktperson.Value & "", Me.Ort.Value & ""
End Sub

Der vollständige Code im Formular-Modul sieht nun so aus:

65325_kunden06-png

Der vollständige Code im Formular-Modul