Gar nicht.
Ablauf in aktueller Version ist folgender:
Initialisierung: nix passiert
Property OptionTable wird gesetzt: catchOptionValues wird ausgeführt.
Andreas
Eine Sache noch, der Aufruf catchOptionValues würde ich abändern und ausschließlich dann aufrufen wenn man es braucht, in der Property Settings.
Da sich die Zahlen nach der Reihenfolge des PK richten, darf man niemals die Long-Zahl im Code oder sonstwo verwenden, da nicht sichergestellt ist, dass diese Werte nach dem Neuerstellen der Enum-Definition gleich sind.
Private Function getKeyName(ByVal keynum As Long)
With CurrentDb.OpenRecordset(OptionTable)
.Move keynum
getKeyName = .Fields("strKey")
End With
End Function
Public Property Get KeyName(ByVal SettingIndex As SettingKeys) As String
If (0 / 1) + (Not Not m_Values) = 0 Then
CatchOptionValues
End If
KeyName = m_Keys(SettingIndex)
End Property
Public Property Get Count() As Long
If (0 / 1) + (Not Not m_Values) = 0 Then
CatchOptionValues
End If
Count = UBound(m_Keys)
End Property
Option Compare Database
Option Explicit
Dim myOpt As OptionManager
Private Sub runTest_Click()
Dim i As Long
Set myOpt = New OptionManager
With myOpt
For i = 1 To .Count
Debug.Print .KeyName(i) & ": " & .Setting(i)
Next i
End With
Set myOpt = Nothing
End Sub
Private Sub CreateEnum_Click()
Set myOpt = New OptionManager
myOpt.UpdateEnum
Set myOpt = Nothing
End Sub
Public Const OptionManagerDefaultDataSource As String = "tabOptions"
[_undefined] = 0
Public Enum SettingKeys
End Enum