Manchmal möchte Sie einen Filter auf die einfache Art setzen – ohne VBA und den Einsatz von Ereignisprozeduren. Das gelingt unter Access sehr leicht, aber nicht ohne Tücken – und auch nicht komplett ohne den Einsatz von VBA: So kann es zum Beispiel sein, dass das Listenfeld keine Daten anzeigt, wenn das für die Eingabe des Vergleichswertes verwendete Textfeld leer ist. Wir schauen uns einen einfachen Listenfeldfilter anhand eines Textfeldes an und zeigen, wie Sie die kleinen Hindernisse umschiffen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1806_EinfacherListenfeldfilter.accdb.
Vorbereitung
Das Formular soll ein Textfeld namens txtSucheNachFirma enthalten sowie ein Listenfeld namens lstKunden, das zu Beginn alle Datensätze der Tabelle tblKunden anzeigt (siehe Bild 1). Dem Listenfeld weisen wir als Datensatzherkunft die folgende Abfrage zu, um die Spalten korrekt auszurichten:
Bild 1: Entwurf des Beispielformulars
SELECT tblKunden.KundeID, tblKunden.KundenCode, tblKunden.Firma, tblKunden.Kontaktperson FROM tblKunden;
Dabei wollen hier nur die Spalten KundeID, Kundencode, Firma und Kontaktperson anzeigen. Damit die Spalte KundeID nur als gebundene Spalte verwendet, aber nicht angezeigt wird, stellen wir die Eigenschaft Spaltenanzahl auf 4 und Spaltenbreiten auf 0cm ein. Dadurch wird die erste Spalte ausgeblendet und die übrigen Spalten teilen sich den verbleibenden Platz.
Das Ergebnis sieht in der Formularansicht nun wie in Bild 2 aus. Hier haben wir auch noch die Eigenschaften Navigationsschaltflächen, Datensatzmarkierer, Bildlaufleisten und Trennlinien auf Nein sowie Automatisch zentrieren auf Ja eingestellt. Hier zeigt sich, dass wir die Breiten der Spalten doch manuell einstellen müssen, um ein brauchbares Ergebnis zu erhalten. Wir stellen die Eigenschaft Spaltenbreiten auf 0cm;2cm ein. Damit wird die Spalte mit dem Kundencode schmaler und die beiden übrigen Spalten teilen sich den verbleibenden Platz.
Bild 2: Formularansicht des Beispielformulars
Filter einbauen
Den Filter bauen wir nun direkt in die Abfrage ein, die wir als Datensatzquelle des Listenfeldes angegeben haben. Diese erhält nun eine WHERE-Bedingung, mit der wir das Feld Firma nach dem Wert des Textfeldes txtSucheNachFirma filtern und sieht anschließend wie in Bild 3 aus.
Bild 3: Datensatzherkunft des Listenfeldes mit Kriterium
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: