TempVars. Klein, unscheinbar – aber sehr nützlich.
Gerade wenn Du mit Formularen, Makros und Berichten arbeitest, die dieselben Werte brauchen.
Ich zeig Dir hier, was TempVars sind, ab wann Du sie nutzen kannst, und wie Du sie professionell einsetzt – in Formularen, Abfragen und VBA.
Was sind TempVars?
TempVars heißen offiziell: Temporary Variables.
Die Idee: Du speicherst einen Wert einmal – und kannst ihn überall nutzen.
- In VBA
- In Makros
- In Abfragen (ja, auch in SQL!)
- In Formularen und Berichten
Ein globaler Speicher, der lebt, solange Access läuft.
Seit wann gibt’s TempVars?
Seit Access 2007.
Vorher musstest Du mit globalen Variablen oder versteckten Formularfeldern tricksen.
Heute brauchst Du das nicht mehr – TempVars sind stabil und einfach zu nutzen.
Wie setzt Du TempVars?
Wert speichern
TempVars.Add "Benutzerrolle", "Admin"
Oder aktualisieren, wenn der Name schon existiert:
TempVars!Benutzerrolle = "Support"
Wert auslesen
Dim rolle As String
rolle = TempVars!Benutzerrolle
Oder direkt inline:
If TempVars!Benutzerrolle = "Admin" Then
' Zugriff gewähren
End If
Wert löschen
TempVars.Remove "Benutzerrolle"
Oder alle auf einmal:
TempVars.RemoveAll
Wofür ich TempVars einsetze
1. Benutzeridentifikation
Beim Start:
TempVars.Add "Benutzername", Environ("USERNAME")
TempVars.Add "Benutzerrolle", ErmittleRolle(TempVars!Benutzername)
Später überall verfügbar – auch in Abfragen oder Formularen.
2. Filter übergeben zwischen Formularen
TempVars.Add "KundenID", Me!KundenID
DoCmd.OpenForm "frmKundendetails"
Im Zielformular:
Me.Filter = "KundenID = " & TempVars!KundenID
Me.FilterOn = True
Schnell. Lesbar. Robust.
3. Abfragen mit dynamischem Inhalt
SELECT * FROM tblRechnungen WHERE KundeID = TempVars!KundenID
Das funktioniert direkt in gespeicherten Abfragen.
Keine Formulare oder Funktionen nötig.
Sehr nützlich für Berichte oder Kombis.
4. Berichte dynamisch filtern
Vor dem Öffnen:
TempVars.Add "Jahr", 2024
DoCmd.OpenReport "rptUmsatzProJahr", acViewPreview
In der Bericht-Abfrage:
SELECT * FROM qryUmsaetze WHERE Jahr = TempVars!Jahr
Klarer geht’s kaum.
Vorteile gegenüber Globalen Variablen
| TempVars | Globale Variablen |
|---|---|
| überall nutzbar | nur in VBA |
| stabiler Scope | können verloren gehen |
| auch in SQL nutzbar | nein |
| kein Modul nötig | muss deklariert werden |
Kurz: TempVars sind das bessere Global.
Vorsicht: Das solltest Du wissen
- TempVars sind global pro Instanz – mehrere Datenbanken teilen sie sich nicht.
- Access vergisst sie beim Schließen automatisch – kein Cleanup nötig (außer Du willst).
- Es gibt keine Typisierung – Du kannst alles reinschieben, aber prüfe beim Auslesen.
If Not IsNull(TempVars!KundenID) Then
Mein Fazit
TempVars sind kein Hexenwerk.
Aber sie sparen Dir viele Umwege – besonders bei rollenbasiertem Zugriff, Filtern, Berichtslogik und Navigation.
Wenn Du sie einmal einsetzt, willst Du sie nicht mehr missen.
Ich verwende sie in jedem größeren Access-Projekt.

