Schnelles und flexibles Suchformular

Mit einem Modul kann man Access dazu bewegen, auch formulierte Suchanweisungen zu verstehen. So liefert etwa die Eingabe »zwischen 1.2.96 und 23.6.96« in einer Suchmaske alle Datensätze, bei denen der Datumswert eines ausgewählten Datenbankfeldes innerhalb dieses Zeitraums liegt. In diesem Tip wird gezeigt, wie Sie dieses praktische Filterformular in die Beispieltabelle »NORDWIND.MDB« ganz einfach einbinden können.

Öffnen Sie diese Beispieldatenbank - sie befindet sich im Unterverzeichnis »Beispiele« Ihres Access-Verzeichnisses. Wechseln Sie auf das Registerblatt »Formular« und betätigen dann die Schaltfläche »Neu«. Achten Sie bitte in der folgenden Dialogbox darauf, daß sich die blaue Markierung auf »Entwurfsansicht« befindet. Betätigen Sie die Schaltfläche »OK«, ohne zuvor eine Tabelle als Grundlage auszuwählen.

Im Formularentwurf deaktivieren Sie nun den Steuerelementassistenten, falls er eingeschaltet ist, durch einen Klick auf die entsprechende Schaltfläche und fügen nach einem weiteren Klick auf die Schaltfläche »Kombinationsfeld« ein Listenfeld in die Formularfläche ein. Nach einem rechten Mausklick auf das neue Objekt wählen Sie »Eigenschaften« und klicken auf das Register »Alle«. Geben Sie unter »Name« die Bezeichnung »Suchfeld« ein und wählen in der Zeile »Herkunftstyp« die Option »Feldliste« aus. Unter »Datensatzherkunft« suchen Sie die Tabelle »Bestellungen« aus der Liste.

Als nächsten Schritt fügen Sie nun ein Textfeld ein, in das Sie später Ihre Suchkriterien eintragen werden. Legen Sie hier unter »Eigenschaften« als »Name« die Bezeichnung »Suchwert« fest. Zum Auslösen der Suche benötigen Sie noch eine »Befehlsschaltfläche«, die Sie ebenfalls mit einem Klick auf die entsprechende Schaltfläche einfügen, und im Feld »Beim Klicken« des Registers »Ereignis« folgende Zeile:

»=bscFormFilter([Suchfeld];
"Suchfeld";[Suchwert];
"Bestellungen")«
Das Formular ist nun fertiggestellt, Sie können es unter dem Namen »Suchen« speichern und danach schließen. Jetzt fehlt noch das Modul, mit dessen Hilfe die Befehlsschaltfläche das Suchergebnis zum Vorschein bringt. Mit »Einfügen | Modul« legen Sie ein neues Modul an und kopieren das untenstehende Modul hinein. Überprüfen Sie das Modul vor dem Speichern mit »Ausführen | Geladene Module kompilieren« auf Fehler, und Ihr Suchformular ist einsatzbereit.

Öffnen Sie das Formular »Suchen« und klicken auf das Kombinationsfeld, um das gewünschte Datenfeld also zum Beispiel »Bestelldatum« auszuwählen. In das Textfeld können Sie jetzt den gewünschten Zeitraum in Form von »zwischen (Datum) und (Datum)« eingeben. Nach einem Klick auf die Schaltfläche erscheinen alle Datensätze, deren Bestelldatum in diesem Zeitraum liegt.

Sie können auch flexibel nach anderen Kriterien suchen. Um zum Beispiel alle Firmen auswählen, die mit »Ma« beginnen, wählen Sie im Auswahlfeld »Empfänger« und geben in das Textfeld die Suchformel »Ma*« ein.

Modul bscFormFilter
Modul bscFormFilter

Function bscFormFilter(sSuchfeld As String, sFeldname As String, _
sSuchenNach As Variant, sFormName As String)
Dim db As Database
Dim rs As Recordset
Dim sTabname As String
Dim iTyp As Integer
Dim sKriterium As String
sSuchfeld = "[" & sSuchfeld & "]"
sTabname = Screen.ActiveForm(sFeldname).RowSource
Set db = CurrentDb()
Set rs = db.OpenRecordset(sTabname)
iTyp = rs.Fields(sSuchfeld).Type
sKriterium = BuildCriteria("[" & sTabname & "]." & sSuchfeld, iTyp, sSuchenNach)
DoCmd.OpenForm sFormName, acFormDS, , sKriterium
End Function