Parameterabfragen mit Access

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Autor: André Minhorst, Duisburg

Es gibt die unterschiedlichsten Möglichkeiten zur Durchführung von Abfragen. Sie reichen von der einfachen Auswahlabfrage, die Sie mit dem Abfragedesigner erstellen, über die parameterisierte Abfrage als Datenherkunft eines Formulars bis hin zu Aktionsabfragen zum Hinzufügen, Löschen und ändern von Daten, die zur Laufzeit per VBA zusammengesetzt werden. Dabei behandelt man die Parameterabfragen oft ein wenig stiefmütterlich, da andere Methoden auf den ersten Blick bequemer erscheinen. Der vorliegende Beitrag beschreibt die Anwendungsmöglichkeiten von Parameterabfragen unterschiedlichster Art.

Die Verwendung von Parametern dient vor allem der Erhöhung der Flexibilität von Abfragen. Während einfache gespeicherte Abfragen ohne Parameter immer das gleiche Ergebnis liefern (es sei denn, die zugrunde liegenden Daten würden geändert), können Sie mit zur Laufzeit dynamisch erstellten Abfragen oder mit Parameterabfragen Ergebnismengen darstellen, die von den jeweiligen Parametern abhängen.

Ein weiterer Vorteil gespeicherter Abfragen ist ein eventueller Performance-Gewinn.

Hinweis

Wenn Sie die Beispieldaten nicht von Hand eingeben möchten, können Sie auch die Beispieldatenbanken Parameterabfragen97.mdb bzw. Parameterabfragen2000.mdb verwenden.

Für die nachfolgenden Beispiele benötigen Sie wie immer einige Beispieldaten. Legen Sie einfach eine Tabelle namens tblKontakte an und fügen Sie ihr die Felder KontaktID, Vorname, Nachname, Geburtsdatum und AnredeID hinzu. Außerdem sollten Sie zwei bis drei Testdatensätze anlegen.

Die zweite Tabelle der Beispieldatenbank heißt tblAnreden und enthält unterschiedliche Anreden wie Herr, Frau usw. Dazu verwendet sie die beiden Felder AnredeID und Anrede.

Die beiden Tabellen sind über das Feld AnredeID der Tabelle tblKontakte miteinander verknüpft.

Die einfachste Möglichkeit zur Erstellung einer Parameterabfrage bietet die Abfrage-Entwurfsansicht von Access. Von dort aus können Sie die erstellten Abfragen auch direkt ausführen und deren Ergebnisse anzeigen lassen.

Erstellung einer Abfrage

Sie öffnen die Abfrage-Entwurfsansicht, indem Sie im Register Abfragen des Datenbankfensters auf die Schaltfläche Neu klicken und anschließend den Eintrag Entwurfsansicht auswählen.

Wählen Sie hier aus der Liste der verfügbaren Tabellen die Tabelle tblKontakte aus und klicken Sie auf die Schaltfläche Hinzufügen (siehe Bild 1).

Bild 1: Hinzufügen einer Tabelle zum Abfrageentwurf

Nachdem Sie die Tabelle tblKontakte hinzugefügt haben, können Sie alle vier Felder KontaktID, Vorname, Nachname und Geburtstag aus der Feldliste in das Entwurfsraster der Abfrage ziehen.

Klicken Sie mit der rechten Maustaste in den oberen Bereich des Abfrageentwurfs und wählen Sie den Eintrag Datenblattansicht aus dem nun erscheinenden Kontextmenü aus, um das Abfrageergebnis anzuzeigen (siehe Bild 2).

Bild 2: Ergebnis der Abfrage

Hinzufügen eines Parameters

Fügen Sie der Abfrage nun einen Parameter hinzu, indem Sie in der Zeile Kriterien im Abfrageentwurf für das Feld Vorname den folgenden Ausdruck eingeben (siehe Bild 3):

=[Geben Sie einen Vornamen ein:]

Bild 3: Abfrage mit Parameter

Beachten Sie, dass dieses Kriterium nur solche Ergebnisse anzeigt, die genau mit dem Kriterium übereinstimmen. Die Verwendung von Platzhaltern, wie dem Sternchen (*) als Platzhalter für eine unbestimmte Anzahl von Zeichen oder dem Fragezeichen () stellvertretend für ein Zeichen, hat hier keine Wirkung.

Verwendung von Platzhaltern

Wenn Sie Platzhalter verwenden möchten, verwenden Sie statt des Gleichheitszeichens den Vergleichsoperator Like. Sie können auch direkt das deutsche Pendant Wie in den Abfrageentwurf eintragen. Access nimmt automatisch die übersetzung ins Deutsche vor:

Wie [Geben Sie einen Vornamen ein:]

Wenn Sie nun die Abfrage ausführen lassen möchten, erscheint ein Dialogfenster mit der angegebenen Aufforderung (siehe Bild 4).

Bild 4: Abfrage eines Parameters per Dialogfenster

Bild 5: Parameterabfrage per Inputbox

Nachdem Sie den gewünschten Wert eingegeben haben, zeigt die Abfrage die gefundenen Datensätze an.

Aussehen der SQL-Anweisung

Wenn Sie im Kontextmenü des Abfragefensters den Eintrag SQL auswählen, erscheint die zugrunde liegende SQL-Anweisung. Sie lautet in diesem Fall:

SELECT tblKontakte.KontaktID, tblKontakte.Vorname,  tblKontakte.Nachname,  tblKontakte.Geburtstag
FROM tblKontakte
WHERE (((tblKontakte.Vorname) Like [Geben Sie einen Vornamen ein:])  AND ((tblKontakte.Geburtstag)  Between [Startdatum] And [Enddatum]));

Hinweis

Die Entwurfsansicht von Abfragen ist schlicht und einfach ein Werkzeug zur komfortablen Erstellung von SQL-Ausdrücken. Diese werden nach der Erstellung auch gespeichert.

Access ist hier etwas übervorsichtig: Wenn eine Abfrage mehrere Tabellen mit gleichnamigen Feldern enthält, dann ist es nicht nur übersichtlicher, sondern auch unbedingt notwendig, dem Feldnamen den Tabellennamen voranzustellen.

Im vorliegenden Fall könnten Sie die Anweisung allerdings erheblich kürzen und erhalten eher eine übersichtlichere Ansicht:

SELECT KontaktID, Vorname, Nachname,  Geburtstag
FROM tblKontakte
WHERE Vorname Like [Geben Sie einen Vornamen ein:]  AND Geburtstag Between [Startdatum]  And [Enddatum];

Vorgabe von Standardwerten

Oftmals erfordert die Eingabe nur Standardwerte. Zur Vereinfachung der Eingabe wäre es hier sinnvoll, einen Standardwert vorzugeben. Dies ist aber mit der beschriebenen Eingabemaske nicht möglich.

Access bietet allerdings einen weiteren, einfachen Dialog, der ein wenig komfortabler ist und für rudimentäre Anwendungen ausreichen kann. Der Dialog bietet eine Reihe von Parametern, von denen hier nur die ersten drei interessant sind: der Fragetext, die überschrift sowie der Standardwert.

Leider kann dieser Dialog nicht direkt aus einer Abfrage heraus aufgerufen werden, Sie müssen sich mit einer kleinen VBA-Funktion helfen.

Legen Sie dazu ein neues Modul an und speichern Sie es unter dem Namen mdlParameterabfragen. Geben Sie dann die Funktion aus Quellcode 1 ein und speichern Sie das Modul.

Public Function Parametereingabe(Frage As String, _    Titel As String, Standardwert As String) As String
    Parametereingabe = _        InputBox(Frage, Titel, Standardwert)
End Function

Quellcode 1

Nun müssen Sie noch den Namen der Funktion sowie die gewünschten übergabeparameter als Kriterium der Abfrage eintragen. Dazu verwenden Sie beispielsweise den folgenden Ausdruck:

Wie Parametereingabe("Bitte geben Sie _ einen Vornamen _ ein:";"Parametereingabe";"*")

Die Abfrage ermittelt nun das Kriterium, indem es die Funktion Parametereingabe aufruft. Diese zeigt wiederum die gewünschte Inputbox mit dem Standardwert an (siehe Bild 5).

Wenn der Benutzer die Schaltfläche OK betätigt, wird das Sternchen als Parameter verwendet. Die Abfrage zeigt dann – soweit keine anderen Kriterien vorhanden sind – alle Datensätze an.

Abfrage mit mehreren Parametern

Wenn Sie für mehrere Felder einen Parameter eingeben möchten, tragen Sie einfach die entsprechenden Texte in die Kriterien-Zeile der gewünschten Felder ein. Es erscheinen dann nacheinander die Dialogfenster mit den angegebenen Texten.

Sie können auch mehrere Parameter zu einem einzelnen Feld abfragen. Das macht vor allem dann Sinn, wenn Sie Datumsangaben in einem bestimmten Zeitraum anzeigen möchten. Der Ausdruck für das Kriterium sieht dann etwa folgendermaßen aus:

Zwischen [Startdatum] Und [Enddatum]

Gleichzeitige Eingabe mehrerer Parameter

Die Parametereingabe wird schnell unübersichtlich, wenn es um mehr als einen Parameter geht. In dem Fall ist es sinnvoller, statt des Standarddialoges ein benutzerdefiniertes Formular zu verwenden. Hier können Sie dann alle benötigten Parameter auf einen Blick anzeigen und gleichzeitig das Layout des Formulars selbst bestimmen.

Dazu benötigen Sie ein einfaches Formular mit vier ungebundenen Textfeldern namens txtVorname, txtNachname, txtGeburtsdatumVon und txtGeburtsdatumBis (siehe Bild 6).

Bild 6: Entwurfsansicht des benutzerdefinierten Eingabeformulars

Es fehlt noch das Bindeglied zwischen dem Formular und der Abfrage. Wenn Sie die gewünschten Parameter in das Formular eingegeben haben, müssen Sie der Abfrage die eingegebenen Werte als Parameter übergeben.

Dazu ändern Sie einfach die Kriterien der Abfrage so um, dass Sie auf die Steuerelemente des Formulars zeigen und deren Inhalt als Parameter für die Kriterien der Abfrage übernehmen.

Den Inhalt eines Steuerelementes in einem Formular können Sie beispielsweise folgendermaßen auslesen:

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

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar