Problemstellung:
Benutzt man globale Variablen kommt es bei unbehandelten Laufzeitfehler zum Verlust des Variableninhaltes.
es ist auf jeden Fall ein Neustart der DB erforderlich im schlimmsten Fall kommt es zu Datenverlusten.
Wie kann ich das umgehen?
Ab Access 2007 gibt es das Objekt TempVars. Diese behalten auch bei unbehandelten Laufzeitfehlern ihren Inhalt
Voraussetzungen:
Das Bsp ist ab A2007 lauffähig. (Download enthält eine accdb-Datei)
Ich möchte hier für das TempVar-Objekt nur die 4 wichtigsten Methoden aufzeigen.
Public Function NewTempVar(sVarName As String, vTempValue As Variant) TempVars.Add sVarName, vTempValue End Function Public Function GetTempVarValue(sVarName As String) As Variant GetTempVarValue = TempVars(sVarName) End Function Public Sub RemoveTempVar(sVarName As String) TempVars.Remove (sVarName) End Sub Public Sub AllRemoveTempVars() TempVars.RemoveAll End Sub
NewTempVar "DB_Path", CurrentProject.Path
Dim x As String x = GetTempVarValue("UserName")
Private Sub Form_Load() 'Füllen der TempVars NewTempVar "UserName", ShowUserName() NewTempVar "TempFolder", GetTempFolder() NewTempVar "CurrentVersion", GetAccVersAndSP() NewTempVar "DB_Path", CurrentProject.Path End Sub
Ergebnis:
Private Sub Form_Load() 'Füllen der öffentlichen Variablen sUser = ShowUserName() sTempPath = GetTempFolder() sAccVersion = GetAccVersAndSP() sDBPath = CurrentProject.Path End Sub
Private Sub Form_Load() Dim vVar As TempVar For Each vVar In TempVars Me.lst_TempVars.AddItem vVar.Name & ";" & vVar.Value Next vVar End Sub
Arbeiten mit dem TempVars-Objekt
ab A07
Die Zip-Datei enthält eine Version ab A07
Ähnliche Artikel
Weiterlesen...