Schnelles Filtern in Unterformularen

Unterformulare zeigen meist mehrere Felder mit Daten in der Datenblatt- oder Endlosansicht an. Der vorliegende Beitrag zeigt, wie Sie schnell nach Begriffen in den im Unterformular angezeigten Daten suchen – ohne zwischendurch die Eingabetaste oder eine Suchen-Schaltfläche betätigen zu müssen.

Warum soll man eigentlich Daten in Unterformularen vom Hauptformular aus filtern oder durchsuchen können Die Antwort ist einfach: Wenn das Unterformular die Daten etwa in der Datenblattansicht zeigt, ist die Unterbringung der für die Filter- oder Suchfunktion notwendigen Steuerelemente schlicht unmöglich, weil Access Kopf- und Fußbereiche von Formularen in der Datenblattansicht ausblendet.

Also bringt man Daten, die man in der Datenblattansicht anzeigen möchte, in einem eigenen Formular unter, das als Unterformular eines weiteren Formulars mit den notwendigen Steuerelementen dient. Abb. 1 zeigt das in diesem Beitrag vorgestellte Formular samt Unterformular.

pic001.tif

Abb. 1: Haupt- und Unterformular mit Suchfunktion

Beispieldaten

Die Daten für dieses Beispiel stammen aus der Tabelle tblParameter, die für das Speichern von Anwendungseinstellungen verantwortlich ist. In diesem Fall stammt diese Tabelle aus der Vertragsverwaltung [1] und enthält einige Konfigurationsdaten für einen Scanner (s. Abb. 2). Das Unterformular enthält diese Tabelle als Datenherkunft und heißt sfmParameter; ziehen Sie alle Felder aus der Feldliste in den Detailbereich und stellen Sie außerdem die Standardansicht auf Datenblatt ein. Gegebenenfalls passen Sie noch die Bezeichnungsfelder an, deren Inhalt in die Kopfzeile der Datenblattansicht übernommen wird. Für eine bessere Optik empfiehlt sich die Anpassung an die Schriftgröße im Hauptformular (Schriftgröße 8). Fügen Sie das Unterformular in ein weiteres Formular namens frmParameter ein und statten Sie dieses mit einem zusätzlichen Textfeld namens txtSuchbegriff aus.

pic002.tif

Abb. 2: Das Unterformular sfmParameter

Filterfunktion hinzufügen

Nun fehlt nur noch die Filterfunktion: Dazu legen Sie für das Ereignis Bei änderung des Textfeldes txtSuchbegriff einfach die Routine aus Listing 1 an. Das Ereignis Bei änderung wird bei jeder änderung des im Textfeld angezeigten Textes ausgelöst – also sowohl beim Eingeben als auch beim Löschen eines Buchstabens.

Listing 1: Auswerten des Filterkriteriums und filtern des Unterformulars

Private Sub txtSuchbegriff_Change()
     Dim strSuchbegriff As String
     strSuchbegriff = Me!txtSuchbegriff.Text
     If Len(strSuchbegriff) > 0 Then
         Me!sfmParameter.Form.Filter = _
"Parameter LIKE "*" _
& strSuchbegriff _
& "*' OR Wert LIKE "*"
& strSuchbegriff & "*'" Me!sfmParameter.Form.FilterOn = True Else Me!sfmParameter.Form.FilterOn = False End If End Sub

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar