Komfortable Filterformulare erstellen
Veröffentlicht am 22.01.2004
Erstellen Sie ein eigenes Filterformular um dem Anwender die Definition eigener Filter zu ermöglichen.
Wenn Sie professionelle Datenbanken entwickeln und dem Anwender die Möglichkeit zur Definition eigener Filter ermöglichen wollen, sind die von Access angebotenen Filtermöglichkeiten oftmals von der Bedienung her zu kompliziert.
Unser Tipp: Erstellen Sie einfach ein eigenes Filterformular!
Besonders einfach wird dies durch die BuildCriteria-Funktion. Legen Sie einfach ein neues leeres Formular an, das Sie mittels der Datenherkunft-Eigenschaft an die gewünschte Datenquelle knüpfen. Auf diesem Formular plazieren Sie nun für jedes Datenfeld ein ungebundenes Textfeld. Ungebunden bedeutet, dass das jeweilige Textfeld nicht an ein Datenfeld gebunden sein darf.
Die Namen der einzelnen Textfelder müssen mit den Namen der jeweiligen Datenfelder übereinstimmen. Ausserdem tragen Sie in die Marke-Eigenschaft (engl. Tag) der Textfelder den Text Filter ein. So können die Felder später von den Bezeichnungsfeldern oder anderen Steuerelementen unterschieden werden.
Die Umwandlung der Benutzereingabe in ein SQL-Kriterium erledigt die folgende Funktion:
Function SQLTextErstellen(FormObj As Form)
Dim R As Recordset
Dim C As Control
Dim SQL As String
Set R = FormObj.RecordsetClone
For Each C in FormObj.Controls
If C.Tag = "Filter" Then
If IsNUll(C.Value) = False Then
SQL = SQL & "("_
& BuildCriteria(C.Name, R(C.Name).Type, C.Value)_
& ") AND"
End If
End If
Next C
'Rechtes AND abschneiden
If Len(SQL) <> 0 Then
SQL = Left(SQL, Len(SQL) - 5)
End If
SQLTextErstellen = SQL
End Function
Die Prozedur durchläuft alle Steuerelemente des angegebenen Formulars und überprüft die Tag-Eigenschaft auf den Inhalt Filter. Bei diesen Feldern wird mit Hilfe der BuildCriteria-Funktion eine SQL-Bedingung zusammengestellt und als Ergebnis der Funktion zurückgegeben.
Angenommen Ihr Filterformular enthält die Textfelder Vorname, Nachname und Postleitzahl. In das Formular haben Sie die folgenden Kriterien eingegeben:
Feld | Kriterium |
Vorname | Wie „A*“ |
Nachname | (keine Eingabe) |
Postleitzahl | Zwischen 10000 Und 40000 |
Die SQLTextErstellen-Funktion ermittelt für diese Eingaben den folgenden SQL-Text:
(Vorname Like "A*") AND (Postleitzahl Betweeen 10000 And 40000)
Diesen Ausdruck können Sie anschließend direkt der Filter-Eigenschaft des Formulars zuweisen, um die Datensätze entsprechend zu filtern.