Suchformulare, Teil 1

Zusammenfassung

Lernen Sie, wie Sie per VBA Suchkriterien auf Basis von Formularsteuerelementen zusammenstellen.

Techniken

Formulare, VBA

Voraussetzungen

Access 97 und höher

Beispieldatenbank

SQLPerVBA97.mdb, SQLPerVBA00.mdb

André Minhorst, Duisburg

Fast immer, wenn man den Benutzer einer Anwendung Suchkriterien zusammenstellen lässt, baut im Hintergrund eine VBA-Routine eine passende SQL-Anweisung zusammen, die dann die gewünschten Datensätze ermittelt. Der vorliegende Beitrag stellt gängige Konfigurationen vor und zeigt, wie man aus der Eingabe in verschiedenen Steuerelementen passende SQL-Anweisungen erzeugt.

Die erste Frage, die man sich vor dem Erstellen eines Suchformulars in einer Datenbank stellt, dreht sich um den Umfang und die Erweiterbarkeit der gewünschten Suchfunktion.

Wenn das Suchformular nur die Einträge einer Adressenliste mit bestimmten Vor- oder Nachnamen heraussuchen soll, reichen zwei Textfelder zur Eingabe der Suchbegriffe wohl aus.

Wenn die zu durchsuchende Datenherkunft aber viele Felder enthält, die als Suchkriterien herhalten können – wäre dann nicht ein Suchformular angebracht, mit dem der Benutzer sich die passenden Suchkriterien per Kombinationsfeld zusammenklicken kann – wie in Bild 1

Prinzipiell ist eine solche Lösung sicher übersichtlicher, aber nicht alle potenziellen Benutzer werden diese Lösung ohne Anleitung einsetzen können (das ist leider wirklich so).

Auch die Konfiguration einer solchen Lösung ist nicht besonders einfach; immerhin können die Suchfelder unterschiedliche Datentypen aufweisen, denen man etwa die zur Verfügung stehenden Vergleichsoperatoren anpassen muss.

Der vorliegende Beitrag konzentriert sich daher auf “statische” Suchformulare, die feste Suchfelder enthalten.

Hinweis

Der Beitrag zeigt das Zusammenstellen von SQL-Ausdrücken auf Basis der für die Suche zur Verfügung stehenden Steuerelemente. Das Ergebnis aller nachfolgenden Beispiele ist demnach ein SQL-Ausdruck, der im Folgenden als Datenherkunft eines Formulars mit der Ergebnisliste oder als Datensatzherkunft eines Steuerelements wie etwa eines Listenfeldes verwendet werden kann. Dies ist auch das Ziel, das Sie beim Bau eines Suchformulars zunächst im Auge haben sollten: Den SQL-Ausdruck können Sie einfach im Abfragefenster testen; erst wenn dieser das gewünschte Ergebnis liefert, brauchen Sie sich um dessen Ausgabe in einer Liste zu kümmern. Deshalb enthalten die nachfolgend vorgestellten Routinen auch eine Anweisung, die den ermittelten SQL-Ausdruck im Direktfenster ausgibt – von dort können Sie ihn direkt in die SQL-Ansicht einer neuen Abfrage kopieren und diese testen.

Bild 1: Ein Suchformular mit dynamischen Suchfeldern

Die einfachste denkbare Suche enthält lediglich ein Feld, in das man den gesuchten Inhalt eines Feldes der Datenherkunft einträgt und alle Datensätze anzeigt, die dem angegebenen Suchkriterium entsprechen.

Einzelnes Suchfeld

Bild 2 zeigt ein einfaches Beispiel für ein solches Formular: Es enthält lediglich ein Feld zur Eingabe des gesuchten Artikelnamens und eine Schaltfläche zum Starten des Suchvorgangs.

Bild 2: Entwurfsansicht eines einfachen Suchformulars

Am einfachsten für den Programmierer, aber am unflexibelsten für den Benutzer ist die Eingabe des exakten Artikelnamens als Suchbegriff.

Die von der passenden Routine aus Quellcode 1 ermittelte SQL-Anweisung sieht dann etwa so aus:

SELECT * FROM Artikel WHERE Artikelname = ''Chai''

Da der Benutzer die genaue Bezeichnung des gesuchten Artikels in der Regel aber nicht kennt, vereinfachen Sie die Aufgabe durch den Einsatz von Platzhaltern.

Das kann auf zwei Arten erfolgen: Entweder Sie nehmen ihm diese Aufgabe ab und formulieren die Suchanfrage um in “Geben Sie einen Teil des gesuchten Artikelnamens ein” oder Sie überlassen ihm selbst das Einfügen der Platzhalter.

Hinweis

Je nach dem Datentyp des zu durchsuchenden Feldes muss man den Suchbegriff “vorbehandeln”. So interpretiert Access Zeichenketten in Vergleichsausdrücken ohne Anführungszeichen als Parameter und fragt diese beim Ausführen der Abfrage ab – also packt man Zeichenketten wie in dem SQL-Ausdruck aus Quellcode 1 in Anführungszeichen. Da der SQL-Ausdruck selbst bereits in Anführungszeichen eingefasst ist, muss man entweder doppelte Anführungszeichen oder Hochkommata verwenden. Bei Datumsangaben gibt es wiederum spezielle Maßnahmen – diese finden Sie unter anderem im Beitrag Access-FAQ: Rund um Access (Shortlink 329) im Kapitel Datum an SQL-String übergeben.

Automatische Platzhalter

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

Schreibe einen Kommentar