Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2004.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Universelle Suchleiste

André Minhorst, Duisburg

Suchfunktionen sind eine der meistprogrammierten Funktionen von Datenbankanwendungen. Es gibt nur wenige Datenbanken, die nicht über mindestens eine mehr oder weniger aufwändige Suchfunktion verfügen. Auf Grund der sehr verschiedenen Anforderungen müssen Suchfunktionen immer wieder neu programmiert werden. Im vorliegenden Beitrag lernen Sie ein Suchformular kennen, das Sie in beliebige Formulare integrieren und für die Suche in Formularen und Listenfeldern verwenden können.

Suchen in Formularen

Eine Suche dient meistens dem Auffinden eines oder mehrerer Datensätze mit bestimmten Eigenschaften. Das Suchergebnis wird in der Regel in Listenform angezeigt und kann zum Beispiel durch den Ausdruck dieser Liste oder einer detaillierten Anzeige der einzelnen Datensätze ausgewertet werden.

Die Suche erfolgt nach einem oder mehreren Kriterien, die sich auf die Felder der gewünschten Datenherkunft beziehen.

Auf eine ergonomische Auswahl beziehungsweise Eingabe der Suchkriterien wird mal mehr und mal weniger Wert gelegt. Manchmal ist hier auch nicht besonders viel Einsatz erforderlich, zum Beispiel, wenn lediglich in einem Feld der Datenherkunft nach den gewünschten Daten gesucht werden soll.

Das ist bei vielen Internetangeboten der Fall, deren Text mit einem einfachen Suchfeld und einer Schaltfläche zum Absenden der Abfrage durchsucht werden kann.

Auch professionelle Datenbankanwendungen kommen in manchen Fällen mit rudimentären Suchfunktionen aus, aber oft sind die Anforderungen dort höher. Das bedeutet, dass zum Beispiel viele verschiedene Felder in beliebigen Kombinationen durchsucht werden können müssen.

Für eine solche Suche ist in der Regel ein relativ hoher Programmieraufwand einzuplanen, wenn sich auch die grundlegenden Techniken oft wiederholen. Auch wenn die Aufgabe meistens nur darin besteht, die Suchbegriffe aus den Suchfeldern auszulesen und eine entsprechende SQL-Abfrage zusammenzustellen, kosten Entwicklung und Tests Zeit und Nerven.

Anwendung des Suchformulars

Im vorliegenden Beitrag lernen Sie eine Lösung kennen, mit der Sie die aufwändige Entwicklung immer neuer Suchfunktionen hoffentlich einschränken können. Die Lösung nennt sich Suchformular, weil es sich dabei um ein Formular handelt, das Sie als Unterformular in bestehende Formulare integrieren können.

Beispielanwendung

Die Funktion und die Vorteile des Suchformulars lassen sich am besten anhand einer kleinen Beispielanwendung beschreiben.

Dabei dient die Nordwind-Datenbank als Quelle für die Beispieldaten. Weiter unten finden Sie eine detaillierte Beschreibung zur Erstellung eines Suchformulars. Das Ergebnis wird hier vorneweg zur Beschreibung der Funktionalität verwendet.

Abb. 1: Beispielsuchformular

Das Beispielformular enthält die Anzeige von Artikeldatensätzen in der Detailansicht eines Endlosformulars. Die Suche ist im Kopf des Formulars untergebracht (s. Abb. 1).

Duale Eingabe

Wie in Abb. 1 zu erkennen ist, besteht die Suchmaske sowohl aus einem großen Textfeld zur Eingabe von Suchbegriffen per Tastatur als auch aus vier Kombinationsfeldern, die zur Eingabe per Maus dienen. Beide Varianten werden ausführlich in den nächsten beiden Abschnitten beschrieben.

Bedienung des Suchformulars

Um eine Suchabfrage mit Hilfe der Kombinationsfelder zu starten, gehen Sie folgendermaßen vor:

  • Wählen Sie nacheinander von rechts nach links die gewünschten Parameter aus.
  • Klicken Sie auf die Schaltfläche mit dem Plus-Zeichen, um den aktuell ausgewählten Ausdruck in das Textfeld Suchkriterien zu übernehmen.
  • Falls nötig, geben Sie weitere Suchkriterien ein.
  • Betätigen Sie die Schaltfläche mit dem Fernglas, um die Suche auszuführen.
  • Klicken Sie auf die Schaltfläche mit dem Filter löschen-Symbol, um das Textfeld Suchkriterien zu leeren und die Datenherkunft zu initialisieren. (
  • Suchkriterien per Maus auswählen

    Die vier Kombinationsfelder erlauben die komfortable Auswahl der Suchkriterien per Maus. Die Felder enthalten folgende Informationen:

  • Verknüpfung: Hier wählen Sie die Art der Verknüpfung aus, also Und oder Oder.
  • Kriterium: Das Kombinationsfeld mit der Beschriftung Kriterium stellt alle vordefinierten Kriterien zur Auswahl. Je nach den getätigten Einstellungen sind das alle Felder, die in dem Formular angezeigt werden.
  • Operator: Das Kombinationsfeld Operator enthält alle für das aktuell im Feld Kriterium ausgewählte Feld bereitstehenden Operatoren wie beispielsweise Gleich (=), Enthält, Größer (>), Kleiner (<) und so weiter. Bei der Einrichtung des Suchformulars können Sie festlegen, welche Operatoren für jedes der angebotenen Kriterien zur Auswahl bereitstehen sollen.
  • Vergleichswert: Je nach der Art des im Feld Kriterium ausgewählten Wertes wird das Feld Vergleichswert entweder als Kombinationsfeld oder Textfeld angezeigt. Wenn sich das Kriterium auf bestehende Inhalte bezieht, ist das Feld Vergleichswert ein Kombinationsfeld mit allen für dieses Feld in der Datenherkunft enthaltenen Werten. Wenn das Kriterium ein Volltext ist, der nicht im Kombinationsfeld darstellbar ist, wird ein Textfeld zur Eingabe des gesuchten Begriffes angeboten. Wenn das Kriterium ein Datum ist, wird die Schaltfläche zum Aktivieren des Kalendersteuerelements aktiviert.
  • Suchkriterien per Tastatur eingeben

    Über kurz oder lang wird der Benutzer die Eingabe von Suchkriterien per Tastatur wie beispielsweise in Google bevorzugen. Die Syntax ist relativ einfach und direkt aus den vier Kombinationsfeldern ableitbar.

    Verknüpfungen

    Es stehen folgende Werte für die Verknüpfung zur Verfügung:

  • Plus-Zeichen (+): Die Bedingung wird mit dem Und-Operator verknüpft.
  • Minus-Zeichen (-): Die Bedingung wird mit dem Und-Operator verknüpft und negiert.
  • Kein Zeichen: Die Bedingung wird mit dem Oder-Operator verknüpft.
  • Kriterien

    Als Kriterium muss der Anwender eines der vorbereiteten Kriterien verwenden. Optimalerweise sind diese so eingestellt, dass alle Felder der angezeigten Datensätze verwendet werden können, wie in dem vorliegenden Beispiel die Felder Artikelname, Lieferant, Kategorie, Liefereinheit, Einzelpreis und so weiter.

    Wenn der Anwender ein nicht vorhandenes Kriterium verwendet, erscheint eine entsprechende Meldung.

    Operatoren

    Die Operatoren werden in Kurzschreibweise eingegeben, also beispielsweise =, >, <, >= und so weiter. Der Operator Enthält wird automatisch aktiviert, wenn der Vergleichswert ein Sternchen (*) enthält.

    Vergleichswerte

    Die Vergleichswerte können praktisch genauso wie in Google eingegeben werden - als einzelne Begriffe mit oder ohne das Sternchen (*), als Platzhalter oder als kompletter Ausdruck mit Leerzeichen, der von Anführungszeichen eingeschlossen werden muss.

    Beispiele für Suchausdrücke

    In Tab. 1 finden Sie einige Beispiele für Suchausdrücke mit Erläuterungen. Die Beispiele können nur ganz grob die Möglichkeiten umreißen.

    Hinweis

    Wenn Sie mehrere Ausdrücke mit Und, Oder oder Und Nicht verknüpfen, beachten Sie, dass die Verknüpfungen von links nach rechts abgearbeitet werden. (

    Integration des Suchformulars

    Das Suchformular lässt sich einfach in bestehende Formulare integrieren.

    Import der notwendigen
    Datenbankobjekte

    Um das Suchformular in einer Datenbank verfügbar zu machen, müssen Sie lediglich einige Datenbankobjekte in die Datenbank importieren. Dazu gehören das Suchformular selbst, einige Konfigurationstabellen sowie ein Modul mit einigen öffentlich zugänglichen Funktionen.

    Integration des Suchformulars

    Das Suchformular kann in beliebige Formulare integriert werden, deren Daten in Listenform angezeigt und nach bestimmten Kriterien durchsucht werden sollen.

    Suchausdruck

    Sucht nach Datensätzen mit folgenden Eigenschaften:

    Artikel, Artikel*, *Artikel, *Artikel*
    ’Artikel’, "Artikel",...

    Standardsuchfeld enthält den Ausdruck *Artikel*. Ohne Angabe eines Kriteriums werden Sternchen automatisch hinzugefügt.

    -Chai

    Standardsuchfeld enthält den Ausdruck *Chai* nicht.

    Artikelname=Chai
    Artikelname="Chai"

    Artikelname ist gleich Chai.

    Artikelname=Chai*
    Artikelname="Chai*"

    Artikelname beginnt mit Chai.

    Artikelname="*Chai*"

    Artikelname enthält Chai.

    +Getränke +Lagerbestand>10

    Standardsuchfeld enthält Getränke und Lagerbestand ist größer als 10.

    Auslaufartikel=True
    Auslaufartikel=Wahr
    Auslaufartikel=Ja
    Auslaufartikel=Yes

    Das Feld Auslaufartikel hat den Wert 0.

    Tab. 1: Beispiele für Suchausdrücke

    Dabei sieht die Lösung zwei Möglichkeiten vor:

  • Die Daten finden Sie in der Detailansicht eines Endlosformulars.
  • Die Daten werden in einem Listenfeld angezeigt.
  • Auch bezüglich der Datenherkunft beziehungsweise der Datensatzherkunft ist das Suchformular flexibel. Sie können sowohl Tabellen als auch Abfragen als Datenherkunft angeben. Einzige Bedingung ist, dass die Datenherkunft in Form einer SELECT-Anweisung angegeben wird und keine m:n-Beziehung in der Abfrage enthalten ist.

    Für die Integration müssen Sie lediglich das Suchformular als Unterformular in das Zielformular einbauen und eine Anweisung in eine Prozedur des Zielformulars eintragen, die eine Funktion zum Initialisieren des Suchformulars aufruft. Außerdem müssen Sie einige Einträge in den Konfigurationstabellen vornehmen.

    Integration im Detail

    Nachfolgend finden Sie eine ausführliche Beschreibung der Schritte, die zur Integration des Suchformulars erforderlich sind.

    Außerdem erfahren Sie, wie die Datenherkunft beziehungsweise Datensatzherkunft des Formulars oder des Listenfeldes beschaffen sein muss, auf die sich das Suchformular auswirkt.

    Hinweis

    Die Datenbank mit dem Suchformular und den übrigen benötigten Objekten finden Sie auf der CD unter dem Namen Suchformular97.mdb (für Access 97) und Suchformular00.mdb (für Access 2000 und höher). Die Datenbanken enthalten ebenfalls die fertigen, nachfolgend beschriebenen Beispiele für die Suchformulare in den Formularen frmArtikel und frmBestellungen. (

    Datenbankobjekte importieren

    Um das Suchformular in Ihre eigene Datenbank einzubauen, gehen Sie folgendermaßen vor:

  • Öffnen Sie die gewünschte Datenbank.
  • Führen Sie aus der Menüleiste den Eintrag Datei ( Externe Daten ( Importieren... aus.
  • Wählen Sie die Datenbank SuchformularXX.mdb aus.
  • Importieren Sie die Tabellen Feiertage, tblSucheKriterien, tblSucheKriterienOperatoren, tblSucheKriteriumstypen, tblSucheOperatoren, tblSucheParameter und tblSucheVerknuepfungsarten, die Formulare frmKalender und frmSuche und das Modul mdlSuchformular. (
  • Die Grundvoraussetzungen sind somit geschaffen. Im nächsten Schritt bereiten Sie ein Formular vor, dem Sie das Suchformular hinzufügen wollen.

    Abb. 2: Dieses Formular wird gleich zum Suchformular.

    Zielformular vorbereiten

    Im ersten Beispiel fügen Sie einem Artikelformular eine Suchfunktion hinzu. Das Artikelformular erstellen Sie schnell mit dem Formularassistenten:

  • Klicken Sie im Register Formulare des Datenbankfensters auf die Schaltfläche Neues Formular und wählen Sie den Eintrag Formular-Assistent aus.
  • Wählen Sie im nächsten Schritt unter Tabelle/Abfrage die Tabelle Artikel aus.
  • Ziehen Sie im nächsten Dialog alle Felder vom Listenfeld Verfügbare Felder in das Feld Ausgewählte Felder.
  • Wählen Sie als Layout den Typ Tabellarisch aus.
  • Übernehmen Sie die Einstellungen der folgenden Dialoge und speichern Sie das Formular unter dem Namen frmArtikel. (
  • Das Formular sieht nun etwas gedrängt aus. Formatieren Sie die Steuerelemente so, dass alle Inhalte sichtbar sind und das Formular etwa so wie in Abb. 2 erscheint.

    Nun bearbeiten Sie den Bereich, in dem sich die Überschriften für die einzelnen Felder befinden. Vergrößern Sie diesen Bereich und verschieben Sie die Überschriften nach unten.

    Fügen Sie oberhalb der Beschriftungen das Formular frmSuche als Unterformular ein. Am einfachsten geht das, wenn Sie es einfach aus dem Datenbankfenster in den Entwurf des Formulars hineinziehen.

    Sie erhalten dabei unter Umständen eine Meldung, dass die Eigenschaft Standardansicht eines Formulars mit Unterformular nicht auf Endlosformular eingestellt sein kann, wie es hier der Fall ist.

    Außerdem wird die Eigenschaft auf den Wert Einzelnes Formular zurückgestellt. Geben Sie nichts um diese Meldung und stellen Sie die Eigenschaft wieder auf den Wert Endlosformular ein.

    Damit das Unterformular nicht wie ein Fremdkörper wirkt, stellen Sie die Eigenschaft Spezialeffekt des Unterformularsteuerelements auf den Wert Flach und die Eigenschaft Rahmenart auf den Wert Transparent ein. Entfernen Sie außerdem das automatisch angelegte Bezeichnungsfeld mit dem Text frmSuche.

    Das Formular verlockt nun schon fast zum Eingeben der ersten Suchbegriffe (s. Abb. 3). Doch es sind noch einige Schritte zu erledigen.

    Zunächst legen Sie für die Ereigniseigenschaft Beim Öffnen des Hauptformulars eine Prozedur mit folgendem Code an:

    Private Sub Form_Open(Cancel As Integer)

        SuchformularInitialisieren Me.Name, 1

    End Sub

    Zumindest in diesem Falle enthält die Prozedur nur eine Anweisung. In anderen Fällen, wenn Sie das Suchformular bestehenden Formularen hinzufügen möchten, sind möglicherweise schon andere Anweisungen vorhanden. Sie können die Anweisung dann an beliebiger Stelle platzieren.

    Die Anweisung ruft die Funktion SuchformularInitialisieren auf. Wichtig dabei ist, dass die Funktion dem Suchformular in diesem Formular sagt, in welchem Formular es sich befindet und welche Nummer es hat.

    Abb. 3: Das Endlosformular mit integriertem Suchformular

    Damit die Kommunikation zwischen Haupt- und Unterformular funktioniert, müssen Sie auch noch den Namen des Unterformularsteuerelements anpassen.

    Ergänzen Sie den bestehenden Namen um die Nummer des Suchformulars. Im vorliegenden Beispiel muss das Suchformularuntersteuerelement frmSuche1 heißen.

    Die Nummer ist deshalb wichtig, weil Sie das Suchformular in beliebig viele andere Formulare innerhalb der Datenbankanwendung integrieren können.

    Sie müssen nur beachten, dass jedes Formular die Funktion SuchformularInitialisieren mit einer anderen Nummer als zweitem Parameter aufruft und das Unterformularsteuerelement den Namen frmSucheX hat, wobei X für die Nummer des Suchformulars steht.

    Außerdem müssen Sie sich die Nummer merken, da Sie diese später beim Bearbeiten der Konfigurationstabellen noch benötigen.

    Wenn Sie das Formular nun in der Formularansicht öffnen, sollte die Funktion ohne Fehlermeldung durchlaufen.

    Außerdem sollten die Kombinationsfelder bereits einige Einträge anzeigen: Das Kombinationsfeld mit der Beschriftung Verknüpfung: enthält die drei Einträge <auswählen>, und und oder und die beiden Kombinationsfelder mit den Beschriftungen Kriterium: und Operator: enthalten jeweils nur den Eintrag <auswählen>.

    Später bei der Anpassung der Konfigurationstabellen legen Sie unter anderem fest, welche Einträge diese Kombinationsfelder in Abhängigkeit von den anderen Kombinationsfeldern haben und welche Werte standardmäßig angezeigt werden.

    Verweise

    Die im Suchformular integrierte Suchfunktion verwendet Reguläre Ausdrücke. Damit alle benötigten Objekte, Methoden und Eigenschaften zur Verfügung stehen, müssen Sie die entsprechende Bibliothek einbinden.

  • Betätigen Sie die Tastenkombination Strg + g und öffnen Sie im nun erscheinenden VBA-Editor den Dialog Verweise über den Menüeintrag Extras ( Verweise.
  • Aktivieren Sie den Eintrag Microsoft VBScript Regular Expressions x.y und schließen Sie den Dialog und das VBA-Fenster. Die Version 1.0 reicht für diese Zwecke aus. (
  • Außerdem verwendet das Suchformular DAO. Wenn Sie also Access 2000 oder höher verwenden, sollten Sie auch noch einen Verweis auf die aktuellste DAO-Bibliothek setzen.

    Die Konfigurationstabellen

    Nun legen Sie die Konfigurationseinstellungen für das Formular fest. Beginnen Sie mit der Tabelle tblSucheParameter.

    Festlegen der Suchparameter

    Die Tabelle tblSucheParameter enthält die grundlegenden Einstellungen für jede einzelne Suche. Dazu gehören die folgenden Felder:

  • SucheID: legt die Nummer der Suche fest, mit der auch die Parameter aus anderen Konfigurationstabellen zugeordnet werden können. Diese Nummer muss mit der weiter oben erwähnten Nummer übereinstimmen.
  • VerknuepfungsartID: Dieses Feld enthält einen Zahlenwert, der festlegt, welcher Eintrag der Tabelle tblSucheVerknuepfungsarten im Kombinationsfeld mit der Beschriftung Verknüpfungsart beim Initialisieren des Suchformulars angezeigt werden soll.
  • KriteriumID: Dieses Feld legt fest, welches der in der Tabelle tblSucheKriterien enthaltenen und zu der Suche mit der in SucheID gespeicherten Nummer gehörende Kriterium beim Initialisieren des Suchformulars angezeigt werden soll.
  • OperatorID: Dieses Feld legt fest, welcher der in der Tabelle tblOperatoren gespeicherten Datensätze beim Initialisieren des Suchformulars angezeigt werden soll.
  • Basisabfrage: Die Basisabfrage ist die Abfrage, die beim Zusammensetzen der neuen Datenherkunft für das Suchergebnis als Basis verwendet wird. Weitere Informationen finden Sie weiter unten.
  • Primaerschluessel: Hier geben Sie den Primärschlüssel der Abfrage ein. Feldnamen mit Leerstellen, Sonderzeichen wie Minuszeichen (-) und Ähnliches müssen in eckige Klammern gefasst werden. Das hier angegebene Feld muss eindeutig für die als Basisabfrage formulierte Abfrage sein.
  • Bezugsformular: Tragen Sie hier den Namen des Formulars ein, in das Sie das Suchformular als Unterformular eingefügt haben.
  • Bezugssteuerelement: Wenn das Suchergebnis nicht direkt im Detailbereich des Hauptformulars, sondern in einem zusätzlichen Steuerelement wie beispielsweise einem Listenfeld angezeigt werden soll, geben Sie dessen Steuerelementnamen hier ein.
  • Standardsuchfeld: Das ist das Feld, in dem nach dem Suchbegriff gesucht wird, wenn der Benutzer kein Feld angegeben hat, in dem gesucht werden soll. Dabei kann es sich um ein einzelnes Feld handeln. Sie können aber auch mehrere Felder zusammenfügen, sodass mehrere Felder gleichzeitig durchsucht werden können. Dazu verbinden Sie die gewünschten Felder beispielsweise folgendermaßen: Tabelle1.Feldname1 & " " & Tabelle1.Feldname2 & " " & Tabelle2.Feldname3. Wichtig ist, dass Sie immer den Tabellennamen vorne anfügen und durch einen Punkt vom Feldnamen trennen.
  • Unterformularname: Dieses Feld beinhaltet den Namen des Unterformulars. In den meisten Fällen ist es der Name frmSuche. Wenn Sie allerdings mehrere Suchformulare innerhalb einer Datenbank verwenden möchten, die unterschiedlich gestaltet sind, müssen Sie zunächst die gewünschte Anzahl Kopien des Suchformulars anlegen und den Namen des zu verwendenden Unterformulars hier eintragen.
  • Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    Verwandte Beiträge:

    Auswahlfelder im Ribbon

    Suchfunktionen von einfach bis komplex

    Vertikale Menüleisten

    Dynamische Ribbons

    Globale Suche

    Zugriff auf Daten in Formularen und Steuerelementen

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.