Duplikate erkennen

4
(1)
Beitrag bewerten
Stand: 10. November 2011

Duplikate zum Datensatz im gleichen Formular

Duplikate-Anzeige im Endlosformular

Damit kommen wir zur zweiten Lösung, der Anzeige in einem Endlosformular. Diese entspricht einem üblichen Haupt- und Unterformular, wobei allerdings keine automatische Synchronisation über die Verknüpfen von- und Verknüpfen nach-Eigenschaften möglich ist, weil diese eben nicht gleich sein sollen. Stattdessen muss auch hier die Datenherkunft-Eigenschaft des Unterformulars per VBA dynamisch angepasst werden.

Erstellen Sie dazu mit dem Formular-Assistenten ein "AutoFormular: Tabellarisch" auf Basis der Tabelle Kunden.

Bild vergrößernSo erstellen Sie automatisch das Endlosformular auf Basis der Tabelle Kunden.

Für dieses Unterformular vergeben Sie den Namen sfmKunden. Es ist nicht besonders hübsch, aber das soll im Moment egal sein:

Bild vergrößernDas Endlosformular reicht für die Anzeige der Duplikate.

Dann schließen Sie es, öffnen den Entwurf von frmKunden und ziehen seinen Namen dann aus dem Datenbankfenster in den Entwurf des Formulars frmKunden. Benennen Sie das Unterformular ebenfalls als sfmKunden.

Bild vergrößernZiehen Sie den Namen aus dem Datenbankfenster in den Entwurf und benennen Sie das Unterformular in sfmKunden um.

Haupt- und Unterformular

Ausführliche Informationen zum Umgang mit solchen Haupt- und Unterformularen finden Sie im Beitrag "Access: Haupt- und Unterformulare"

Löschen Sie im Hauptformular außerdem das vorhin eingesetzte Listenfeld sowie dessen VBA-Code. Außerdem verändert sich die Prozedur SucheDuplikate() wie im folgenden Code:

Private Sub SucheDuplikate(strKontaktperson As String, strOrt As String)
    Dim lngAnzahl As Long

    m_strSuchkriterien = "[Kontaktperson] LIKE '*" & strKontaktperson & "*' AND [Ort] LIKE '*" & strOrt & "*' AND [Kunden-Code] <> '" & Me.Kunden_Code.Value & "'"

    lngAnzahl = DCount("*", "Kunden", m_strSuchkriterien)
    If lngAnzahl = 0 Then
        Me.lblDuplikate.Visible = False
        Me.sfmKunden.Visible = False
    Else
        With Me.lblDuplikate
            .Visible = True
            .Caption = lngAnzahl & " Duplikate"
        End With
       With Me.sfmKunden
            .Visible = True
            .Form.RecordSource = "SELECT * FROM [Kunden] WHERE " & m_strSuchkriterien
            .LinkChildFields = ""
            .LinkMasterFields = ""
        End With
    End If
End Sub

Access verschlimmbessert eigenmächtig

Sie haben sich möglicherweise im Code über die beiden scheinbar überflüssigen Zeilen mit LinkChildFields und LinkMasterFields gewundert? Immerhin sind diese Eigenschaften Verknüpfen von und Verknüpfen nach im Entwurf nachweislich schon leer gewesen.

Leider füllt Access die aber ungefragt beim Zuweisen einer neuen Datenquelle, ohne das zu melden. Dadurch wird immer nur der aktuelle Datensatz als angebliches Duplikat angezeigt und Sie würden ewig frustriert in Ihrem Code nach dem Fehler suchen.

Durch das editierbare Endlos-Unterformular hat Ihr Benutzer nun mit minimalem Aufwand die Möglichkeit, Original und Duplikat gleichzeitig zu bearbeiten, um etwa Teile der Adresse zu kopieren.

Mitglied werden

Als zahlendes Mitglied von akademie.de haben Sie vollen Zugriff auf alle Inhalte und können alle PDF-Dateien, Checklisten, Mustervorlagen und Anwendungen herunterladen.

Sind Sie sich noch unsicher? Dann wählen Sie die Option “akademie.de kostenlos testen”. So können Sie sich 14 Tage in Ruhe umschauen. Downloads stehen Ihnen in dieser Zeit nicht zur Verfügung. Gefällt Ihnen akademie.de nicht, reicht ein formloser Widerruf per E-Mail innerhalb der ersten 14 Tage. Es entstehen für Sie keine Kosten. Widerrufen Sie nicht, erhalten Sie nach Ablauf von 14 Tagen vollen Zugriff und der Mitgliedsbeitrag wird abgebucht.

Ich bin bereits Mitglied
Mitglied werden!
Ich entscheide mich für folgende Zahlungsweise:

Downloads zu diesem Beitrag

Newsletter abonnieren