Tipps "n" Tricks
Anwender-Software - Access

Last Update: 24. Dezember 2001/Webmaster

Variablen in Abfagen nutzen

Thema:

Access 97/2000/2002

Häufig verwenden Sie in Ihren Datenbank-Projekten globale Variablen, um Informationen festzuhalten, auf die Sie in der gesamten Datenbank zugreifen möchten. Wenn Sie das per VBA tun, klappt das auch wunderbar. Versuchen Sie allerdings, die Variable in einer Abfrage oder in einem Ausdruck einzusetzen, gibt Access eine Fehlermeldung aus oder liefert falsche Ergebnisse. Das liegt daran, dass Access den Variablennamen entweder als Text oder als Feldnamen interpretiert. Ein Zugriff auf globale Variablen ist nicht möglich.

Sie können das Problem umgehen, indem Sie in einem beliebigen Modul eine Funktion einsetzen, die den Inhalt der betreffenden Variablen als Ergebnis liefert. Diese Funktion können Sie dann in Abfragen oder Ausdrücken einsetzen. Zum Beispiel: Sie haben eine Datenbank erstellt, die in verschiedenen Ländern eingesetzt wird. In einer globalen Variablen "EinsatzLand" halten Sie fest, in welchem Land die jeweils installierte Datenbank zum Einsatz kommt. Die Variable enthält also "Schweiz", "USA" oder ähnlich. In Abfragen möchten Sie zum Beispiel nur Kunden oder Lieferanten aus diesen Ländern selektieren. In einem Modul haben Sie die betreffende Variable über "Global EinsatzLand As String" deklariert. In diesem Modul legen Sie die folgende Funktion an:

Function AktuellesLand () As String
    AktuellesLand = EinsatzLand
End Function

Beim Aufruf der Funktion wird einfach der Inhalt der globalen Variablen "EinsatzLand" als Funktionsergebnis gesetzt. Diesen Mechanismus können Sie beispielsweise in einem Formular einsetzen, um alle Kunden des aktuellen Landes zu Infozwecken anzuzeigen:
  • Legen Sie eine Abfrage "Kunden/Aktuelles Land" an, die die betreffenden Kunden selektiert und fügen das Feld Land in einer zweiten Spalte hinzu. Als Kriterium verwenden Sie:
=AktuellesLand()
  • Auf diese Weise werden nur die Datensätze selektiert, bei denen das Land mit dem Eintrag übereinstimmt, den die Funktion "AktuellesLand()" als Ergebnis liefert.
  • Im Formular legen Sie eine Schaltfläche "Kunden aktuelles Land" an, der Sie in der Ereignisprozedur "Beim Klicken" folgende Anweisung zuordnen:
Sub btnKundenAktuell_Click ()
  DoCmd.OpenQuery "Kunden/Aktuelles Land"
End Sub


Beim Klicken auf diese Schaltfläche wird die Abfrage geöffnet und zeigt nur die Kunden für das betreffende Land an, das Sie in der globalen Variablen "EinsatzLand" gesetzt haben. Diese Initialisierung nehmen Sie zum Beispiel beim Laden des Formulars vor:

Sub Form_Load ()
  EinsatzLand = "Schweiz"
End Sub

 

Tipps "n" Tricks
Anwender-Software - Access