Access Anfänger: Filtern und Sortieren im Endlosformular

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

  1. Ich möchte ein Endlos-Formular nach einem oder mehreren Begriffen filtern.
  2. Ich möchte ein Endlos-Formular nach einem oder mehreren Feldern sortieren.

Endlos-Formular filtern

  • In unserem Beispiel-Formular haben wir im Formularkopf drei ungebundene Textfelder, in die die Filterkriterien eingegeben werden können. Sie heißen SuchfeldNachname, SuchfeldVorname, SuchfeldMitgliedNr
  • Die Formularfelder, nach denen gefiltert werden soll, heißen Nachname, Vorname und MitgliedNr.
  • Über die Schaltfläche_Filtern wird der Filter schließlich angewendet.


Zusammenstellung des Filterstrings (Filterkriterien)

Dim strFilter as String


  • Zahl als Filterkriterium:
Um nach einer Zahl, z.B. der MitgliedNr 10 zu filtern, würde der Filterstring so aussehen:
strFilter = "MitgliedNr = 10"
Da wir aber die MitgliedNr aus dem SuchfeldMitgliedNr auslesen wollen, bauen wir dieses Feld in den Filterstring ein.
strFilter = "MitgliedNr = " & Me!SuchfeldMitgliedNr


  • String (Zeichenfolge) als Filterkriterium:
Wenn das Filterkriterium ein String ist, muss dieser nach folgendem Muster in Hochkommata eingeschlossen werden:
strFilter = "Nachname = 'Mustermann'"
Auch das SuchfeldNachname und SuchfeldVorname das bauen wir in den Filterstring ein.
'Filterstring, um nur nach dem Nachnamen zu filtern:
strFilter = "Nachname = '" & Me! SuchfeldNachname & "'"
 
'Filterstring, um nach dem Nachnamen und nach dem Vornamen zu filtern:
strFilter = " Nachname = '" & Me!SuchfeldNachname & "' And Vorname = '" & Me!SuchfeldVorname & "'"


  • Um nur nach einem Teil des Feldinhalts zu filtern, wird der Like-Operator verwendet.
Der Platzhalter Stern (*) kann hierbei am Anfang und/oder am Ende des Suchbegriffs eingesetzt werden.
strFilter = "Nachname Like '*man*'"
'Filterstring, um nach einem Teil des Nachnamens zu filtern:
strFilter = "Nachname Like '*" & Me!SuchfeldNachname & "*'"


  • Praxisbeispiel eines Filterstrings:
Da in der Praxis eines oder mehrere der Filterfelder leer sein können, wird der Filterstring flexibel zusammengestellt.
If Not IsNull(Me!SuchfeldMitgliedNr) Then
   strFilter = strFilter & " And MitgliedNr = " & Me!SuchfeldMitgliedNr
 End If
 If Not IsNull(Me!SuchfeldNachname) Then
   strFilter = strFilter & " And Nachname Like '*" & Me!SuchfeldNachname & "*'"
 End If
 If Not IsNull(Me!SuchfeldVorname) Then
   strFilter = strFilter & " And Vorname Like '*" & Me!SuchfeldVorname & "*'"
 End If
 
 'Die ersten 5 Zeichen ( And ) des Filterstrings werden abgeschnitten.
 strFilter = Mid(strFilter, 6)


Anwendung des Filters
Nachdem der Filterstring erstellt wurde, wird der Filter angewendet. Das geschieht hier durch Drücken der Schaltfläche Schaltfläche_Filtern.

Private Sub Schaltfläche_Filtern_Click()
 Me.Filter = strFilter
 Me.FilterOn = True
End Sub


Deaktivieren des Filters
Mit folgendem Befehl kann der Filter wieder weggenommen werden. Es werden dann wieder alle Datensätze laut den Kriterien der zugrundeliegenden Abfrage angezeigt. Dazu verwenden wir eine weitere Schaltfläche Schaltfläche_Filter_Löschen.

Private Sub Schaltfläche_Filter_Löschen_Click()
 Me.FilterOn = False
End Sub


Endlos-Formular sortieren

  • Das Endlosformular kann nach einem oder mehreren Feldern aufsteigend oder absteigend sortiert werden.
'Aufsteigende Sortierung nach dem Feld Nachname:
Me.OrderBy = "Nachname"
 
'Absteigende Sortierung nach dem Feld Vorname:
Me.OrderBy = "Nachname DESC"
 
'Sortierung nach zwei Feldern:
Absteigende Sortierung nach Nachname und aufsteigende Sortierung nach Vorname:
Me.OrderBy = "Nachname DESC, Vorname"
  • Über die Schaltfläche_Sortieren wird die Sortierung angewendet.
Private Sub Schaltfläche_Sortieren_Click()
 Me.OrderByOn = True
End Sub
  • Über die Schaltfläche_Sortierung_Löschen wird die Sortierung wieder weggenommen. Die Datensätze werden wieder so angezeigt, wie sie in der zugrundeliegenden Abfrage/Tabelle sortiert sind.
Private Sub Schaltfläche_Sortierung_Löschen_Click()
 Me.OrderByOn = False
End Sub


Wiki hinweis.png

Hinweis für den Programmierer:
Wenn man bei aktivem Filter oder aktiver Sortierung von der Formularansicht in die Entwurfsansicht des Formulars wechselt, wird der aktuelle Filter oder die aktuelle Sortierung fest im Formular gespeichert. Er/sie kann nur in der Entwurfsansicht manuell wieder gelöscht werden.


Wiki-Links