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.

Die folgenden Möglichkeiten gelten auch für Formulare in Einzeldarstellung.

Endlos-Formular filtern

  • In den untenstehenden Beispielen werden drei ungebundene Textfelder im Formularkopf verwendet, 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 Schaltflaeche_Filtern wird der Filter angewendet, und über die Schaltfläche Schaltflaeche_Filter_Loeschen wird der Filter deaktiviert.


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"
Um die MitgliedNr aus dem SuchfeldMitgliedNr auszulesen, wird dieses Feld in den Filterstring eingebaut.
   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'"
Das SuchfeldNachname und/oder das SuchfeldVorname kann auch in den Filterstring eingebaut werden.
   '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*'"
Auch hier kann wieder ein Suchfeld in den Filterstring integriert werden.
   'Filterstring, um nach einem Teil des Nachnamens zu filtern:
   strFilter = "Nachname Like '*" & Me.SuchfeldNachname & "*'"


  • Praxisbeispiel für die Zusammensetzung 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, kann der Filter angewendet werden. Das geschieht beispielsweise durch Drücken der Schaltfläche Schaltflaeche_Filtern.

Private Sub Schaltflaeche_Filtern_Click()
   Me.Filter = strFilter
   Me.FilterOn = True
End Sub


Deaktivieren des Filters
Mit folgendem Befehl kann der Filter wieder weggenommen (deaktiviert) werden. Das bewirkt, dass dann wieder alle Datensätze laut den Kriterien der zugrundeliegenden Abfrage angezeigt werden. Der Vorgang wird mittels der Schaltfläche Schaltflaeche_Filter_Loeschen durchgeführt.

Private Sub Schaltflaeche_Filter_Loeschen_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 Schaltflaeche_Sortieren wird die Sortierung angewendet.
Private Sub Schaltflaeche_Sortieren_Click()
   Me.OrderByOn = True
End Sub
  • Über die Schaltflaeche_Sortierung_Loeschen wird die Sortierung wieder weggenommen. Die Datensätze werden wieder so angezeigt, wie sie in der zugrundeliegenden Abfrage/Tabelle sortiert sind.
Private Sub Schaltflaeche_Sortierung_Loeschen_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 Filterausdruck oder der aktuelle Sortierungsausdruck fest im Formular gespeichert. Er kann dann nur in der Entwurfsansicht manuell wieder gelöscht werden.


Wikilinks

Weblinks