Access 7.0
Schnelles und flexibles Suchformular
Antwort
Tip: 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
Sie die Schaltfläche »Neu«. Achten Sie bitte in der folgenden Dialogbox darauf, daß
sich die blaue Markierung auf »Entwurfsansicht« befindet und betätigen Sie die
Schaltfläche »OK«, ohne zuvor eine Tabelle als Grundlage auszuwählen. Im
Formularentwurf deaktivieren Sie nun den Steuerelementassistenten, falls er
eingeschalten 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 Sie 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 eingeben: »=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 geben die im Kasten abgedruckten Zeilen ein.
Ü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 Sie 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 liegen. 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 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