Filterkriterien für Formulare, Teil III: Kombinationsfelder

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

In den ersten beiden Teilen dieser Artikelreihe haben Sie erfahren, wie Sie Felder der verschiedenen Datentypen filtern. Nun geht es ans Eingemachte: Wir filtern nach dem Inhalt von Kombinationsfeldern. Eigentlich könnte dies ganz leicht sein: Der Benutzer wählt einfach eine Wert des Kombinationsfeldes aus und die Datenherkunft wird nach dem Wert im entsprechenden Feld gefiltert. Allerdings kann es ja auch geschehen, dass man nicht nach dem Wert des gebundenen Feldes im Kombinationsfeld, sondern nach dem angezeigten Wert filtern möchte. Wir schauen uns beide Fälle an.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1306_FilterkriterienFuerFormulare.mdb.

Beispielformular

Das Beispielformular sieht wie in Bild 1 aus. Es heißt frmFilternNachKombinationsfeld und enthält im Formularkopf ein Kombinationsfeld namens cboLieferantNachID und ein Textfeld namens txtLieferantNachName.

Formular zum Filtern nach Kombinationsfeldern und ihren Inhalten

Bild 1: Formular zum Filtern nach Kombinationsfeldern und ihren Inhalten

Im Detailbereich haben wir ein Unterformular namens frmFilternNachKombinationsfeld eingerichtet, das die Daten der Tabelle tblArtikel anzeigt.

Filtern nach der gebundenen Spalte

Das Kombinationsfeld cboLieferantNachID soll nach der Auswahl eines Eintrags direkt diejenigen Artikel im Unterformular anzeigen, die vom angegebenen Lieferanten geliefert werden. Dazu muss das Kombinationsfeld allerdings erst einmal alle Lieferanten anzeigen. Diese können Sie auf zwei Arten beziehen:

  • Erstens über die Tabelle tblLieferanten. Dies würde alle Lieferanten liefern, die überhaupt vorhanden sind.
  • Zweitens über eine Abfrage, welche die Tabellen tblArtikel und tblLieferanten verknüpft. Auf diese Weise würde das Kombinationsfeld nur diejenigen Lieferanten anzeigen, die aktuell einem Artikel zugeordnet sind.

Da beide Varianten interessant sind, schauen wir uns beide an. Im ersten Fall weisen Sie der Eigenschaft Datensatzherkunft des Kombinationfeldes die folgende SQL-Anweisung zu:

SELECT LieferantID, Firma 
FROM tblLieferanten ORDER BY Firma;

Die Datensätze der Tabelle tblLieferanten werden durch die Klausel ORDER BY Firma direkt nach dem Firmennamen des Lieferanten sortiert.

Damit das Kombinationsfeld nur die Werte des zweiten Feldes anzeigt, aber den Wert aus dem Feld LieferantID aus dem ersten Feld als gebundene Spalte verwendet, stellen Sie noch die beiden folgenden Eigenschaften ein:

  • Spaltenanzahl: 2
  • Spaltenbreiten: 0cm

Das Filtern selbst ist relativ leicht – Sie brauchen nur eine Ereignisprozedur für die Ereigniseigenschaft Nach Aktualisierung des Formulars zu hinterlegen, welche den Filterausdruck des Unterformulars einstellt. Diese Ereignisprozedur finden Sie in Listing 1.

Private Sub cboLieferantNachID_AfterUpdate()
     With Me!sfmFilternNachKombinationsfeld.Form
         .Filter = "LieferantID = " & Me!cboLieferantNachID
         .FilterOn = True
     End With
End Sub

Listing 1: Lieferanten nach ID filtern

Nach der Auswahl eines der Einträge aus dem Kombinationsfeld zeigt das Unterformular nun bereits alle verfügbaren Einträge an (siehe Bild 2).

Filtern von Datensätzen nach der gebundenen Spalte des Nachschlagefeldes

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar