Beitrag aus SmartTools Access Weekly
Parameterabfragen per VBA anpassen und ausführen
Access 365 2021 2019 2016 2013 2010
FRAGE : Ich möchte die Anzahl der Abfragen in meiner Access-Datenbank reduzieren und erstelle dazu verschiedene Parameterabfragen. In einigen Fällen wird die Ausführung programmatisch gestartet. Ich möchte zum Beispiel per VBA eine Abfrage ausführen, bei der verschiedene Parameter definiert sind und Werte dafür an die Abfrage übergeben werden müssen. Dies soll abhängig von Inhalten einzelner Variablen erfolgen. Wie gehe ich hier am besten vor?
H. Weber
ANTWORT Nutzen Sie zum Beispiel Anweisungen wie die folgenden:
Dim db As DAO.Database
dim qd As DAO.QueryDef
dim rs As DAO.Recordset
Set db = CurrentDb()
Set qd = db.QueryDefs("Abfragename")
If Var_1 = 1 Then
qd.Parameters(1)= "ABC"
ElseIf Var_1 = 2 Then
qd.Parameters(1)= "DEF"
ElseIf Var_1 = 3 Then
qd.Parameters(1)= "GHI"
End If
If Var_2 = True Then
qd.Parameters(2)= Now
End If
"Abfragename" ersetzen Sie durch den Namen der Abfrage, die Sie per VBA ausführen bzw. anpassen möchten. Auf die einzelnen Parameter greifen Sie dann abhängig von den Inhalten der Variablen über die Auflistung "Parameters" wie oben gezeigt zu und weisen ihnen die gewünschten Werte zu.
Soll das Abfrageergebnis anschließend nur in der Datenblattansicht angezeigt werden, nutzen Sie folgende Anweisung:
qd.Execute
Um das Abfrageergebnis als Recordset zu verarbeiten, wäre folgende Anweisung auszuführen:
Set rs = qd.Execute()
Wenn ein auf der Abfrage basierender Bericht geöffnet werden soll, geschieht dies mit folgender Anweisung:
DoCmd.OpenReport "Bericht"
"Bericht" ist der Name des Berichtes, der auf der Abfrage basiert.