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/2002.

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

Parameterabfragen mit Access

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.

Beispieldaten

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.

Auswahlabfragen mit
Parametern

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 (s. Abb. 1).

Abb. 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 (s. Abb. 2).

Abb. 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 (s. Abb. 3):

=[Geben Sie einen Vornamen ein:]

Abb. 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 (s. Abb. 4).

Abb. 4: Abfrage eines Parameters per Dialogfenster

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

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.