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.

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.

    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. (
  • Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
    Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
    Zur Bestellung ...
    Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
    Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar