Filterformular für alle Fälle: Einbau und Bedienung

Access bietet von Haus aus komfortable Möglichkeiten zum Filtern von Datensätzen – über das Ribbon, über das Dropdown-Menü im Spaltenkopf des Datenblatts oder über eigene Filtereigenschaften des Formulars. Diese Lösungen stoßen jedoch schnell an ihre Grenzen, sobald man komplexere Filterbedingungen kombinieren möchte oder dem Benutzer eine moderne, übersichtliche Filteroberfläche bieten will. Wir stellen in dieser zweiteiligen Beitragsreihe ein universell einsetzbares Filterformular vor, das sich mit wenigen Handgriffen in jedes bestehende Formular einbauen lässt. Im ersten Teil zeigen wir, wie das Filterformular eingebaut und bedient wird. Der zweite Teil beleuchtet die Programmierung hinter den Kulissen.

Der Ausgangspunkt: Ein Formular mit vielen Datensätzen

Bild 1 zeigt das Ausgangsformular frmDatenMitFilter mit einer Kundentabelle – 100 Datensätze, dargestellt als Datenblatt in einem Unterformular. In der Kopfzeile des Formulars befindet sich die Schaltfläche Filtern, die das Filterformular öffnet. Der Benutzer sieht zunächst alle Datensätze und kann über diese Schaltfläche jederzeit einen Filter setzen oder anpassen.

Das Ausgangsformular mit 100 Kundendatensätzen und der Schaltfläche zum Öffnen des Filterformulars

Bild 1: Das Ausgangsformular mit 100 Kundendatensätzen und der Schaltfläche zum Öffnen des Filterformulars

Mit einem Klick auf Filtern öffnet sich das Filterformular amvFilter als schwebendes Popup-Fenster. Das Ausgangsformular bleibt dabei vollständig bedienbar im Hintergrund – der Benutzer kann das Filterformular verschieben, um die Datensätze im Hintergrund zu sehen.

Das Filterformular beim Öffnen

Bild 2 zeigt das frisch geöffnete Filterformular. Es startet stets leer und kompakt: Eine einzige Filterzeile ist sichtbar, bestehend aus einem Kombinationsfeld für die Feldauswahl und einem noch deaktivierten Kombinationsfeld für die Bedingungsauswahl. Die Schaltflächen Zurücksetzen und Filter anwenden sind zunächst deaktiviert – sie werden erst aktiv wenn mindestens eine Filterbedingung ausgefüllt ist.

Das Filterformular startet leer - Schaltflächen sind noch deaktiviert

Bild 2: Das Filterformular startet leer – Schaltflächen sind noch deaktiviert

Das Filterformular passt seine Höhe stets automatisch an die Anzahl der aktiven Zeilen an. Es startet also bewusst klein und nimmt nur den Platz ein den es gerade benötigt.

Mit jeder neuen Eingabe wächst es um eine Zeile, beim Löschen einer Bedingung schrumpft es wieder.

Schritt 1: Ein Feld auswählen

Der erste Schritt beim Einrichten eines Filters ist die Auswahl des Feldes das gefiltert werden soll.

Bild 3 zeigt die aufgeklappte Feldauswahlliste: Das Filterformular liest beim Öffnen automatisch alle Felder des Recordsets aus dem aufrufenden Formular aus und zeigt sie hier an – in diesem Fall die Felder der Kundentabelle: KundeID, Firma, Vorname, Nachname, Strasse, PLZ, Ort, Geburtsdatum, Rating und Aktiv. Es ist keine manuelle Konfiguration der Felder notwendig.

Die Feldauswahlliste zeigt automatisch alle Felder des Recordsets an

Bild 3: Die Feldauswahlliste zeigt automatisch alle Felder des Recordsets an

Sobald der Benutzer ein Feld auswählt, passieren zwei Dinge gleichzeitig: Das Bedingungsfeld wird aktiviert und mit den für diesen Feldtyp passenden Vergleichsoperatoren befüllt, und darunter erscheint automatisch eine zweite leere Filterzeile.

Das Filterformular erkennt dabei selbstständig ob es sich um ein Text-, Zahlen-, Datums- oder Ja/Nein-Feld handelt und bietet nur die jeweils sinnvollen Operatoren an.

Schritt 2: Die Bedingung auswählen

Bild 4 zeigt die Bedingungsauswahl nachdem das Feld KundeID gewählt wurde. Da es sich um ein Zahlenfeld handelt, stehen die Operatoren Gleich, Nicht gleich, Größer als, Kleiner als, Ist zwischen, Ist leer und Ist nicht leer zur Verfügung.

Die Bedingungsauswahl zeigt nur die für den Feldtyp passenden Operatoren

Bild 4: Die Bedingungsauswahl zeigt nur die für den Feldtyp passenden Operatoren

Für Textfelder wären es andere Operatoren wie Enthält oder Beginnt mit – der Benutzer sieht immer nur die Optionen die für den gewählten Feldtyp tatsächlich sinnvoll sind.

Sobald eine Bedingung ausgewählt ist die einen Vergleichswert erfordert, erscheint rechts neben der Bedingungsauswahl automatisch ein Eingabefeld für den Wert. Bei Bedingungen wie Ist leer oder Ist nicht leer erscheint dagegen kein Eingabefeld – der Operator allein definiert bereits den vollständigen Filter.

Das Formular validiert Tastatureingaben in Echtzeit: In Eingabefelder für Zahlenwerte können nur Ziffern, Komma, Punkt und Minuszeichen eingegeben werden – alle anderen Zeichen werden stillschweigend abgewiesen.

Erster Filter anwenden

Einen ersten Filter sehen wir in Bild 5: Hier haben wir das Feld KundeID ausgewählt, als Bedingung Größer als gesetzt und den Wert 95 eingestellt.

Der erste Filter ist gesetzt - von 100 Datensätzen bleiben 5 übrig

Bild 5: Der erste Filter ist gesetzt – von 100 Datensätzen bleiben 5 übrig

Darunter ist bereits eine zweite leere Zeile sichtbar, bereit für eine weitere Bedingung.

Die Schaltfläche ODER-Filtergruppe hinzufügen ist erschienen, und Filter anwenden ist nun aktiv. Ein Klick darauf überträgt den Filter sofort an das aufrufende Formular – im Hintergrund sieht man bereits die gefilterten Datensätze: von 100 Kunden bleiben 5 übrig, nämlich alle mit KundeID größer als 95.

Das Filterformular bleibt nach dem Anwenden geöffnet. Der Benutzer kann es jederzeit anpassen: weitere Bedingungen hinzufügen, bestehende ändern oder einzelne Zeilen über die rote X-Schaltfläche am rechten Rand entfernen.

Beim Löschen einer Zeile schrumpft das Formular automatisch und die verbleibenden Bedingungen rücken nach oben.

Mehrere Bedingungen kombinieren

Bild 6 zeigt, wie eine zweite Bedingung hinzugefügt wurde: Zusätzlich zur KundeID-Bedingung wird nun auch nach dem Firmenfeld gefiltert – Beginnt mit „M“.

Zwei UND-verknüpfte Bedingungen - nur noch ein Datensatz erfüllt beide Kriterien

Bild 6: Zwei UND-verknüpfte Bedingungen – nur noch ein Datensatz erfüllt beide Kriterien

Beide Bedingungen innerhalb einer Gruppe sind automatisch UND-verknüpft: Ein Datensatz muss also beide Bedingungen gleichzeitig erfüllen um angezeigt zu werden. Das Ergebnis ist entsprechend streng – von den fünf Kunden mit KundeID größer als 95 hat nur einer einen Firmennamen der mit M beginnt: ein einziger Datensatz bleibt übrig.

Das Filterformular unterstützt bis zu fünf Bedingungen pro Gruppe. Jede neue Feldeingabe fügt automatisch eine weitere leere Zeile hinzu, bis das Maximum von fünf Zeilen erreicht ist – dann verschwindet die ODER-Filtergruppe hinzufügen-Schaltfläche, da keine weitere Zeile hinzugefügt werden kann.

ODER-Gruppen und Datumsfelder


Nur für Abonnenten

Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.

Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.

So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.

Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.

Bereits Abonnent? Hier einloggen


Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →

Schreibe einen Kommentar