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.

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.

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.

Bild 1: Beispielsuchformular

Das Beispielformular enthält die Anzeige von Artikeldatensätzen in der Detailansicht eines Endlosformulars. Die Suche ist im Kopf des Formulars untergebracht (siehe Bild 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.

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

    Import der notwendigenDatenbankobjekte

    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=ChaiArtikelname=”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=TrueAuslaufartikel=WahrAuslaufartikel=JaAuslaufartikel=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.

    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.

    Bild 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 Bild 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 (siehe Bild 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.

    Bild 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.

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    den kompletten Artikel im PDF-Format mit Beispieldatenbank

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar