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 5/2006.

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

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

Suchformulare, Teil 1

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.

Statisch oder dynamisch?

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 Abb. 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. (

Abb. 1: Ein Suchformular mit dynamischen Suchfeldern

Einfache Suche

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

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

Abb. 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. (

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.