Rückruffunktionen (Callback Functions) in Access anwenden

Hallo liebe Leser,
beim Schmökern in diversen Foren bin ich auf Rückruffunktionen gestoßen, die ich bislang selbst nicht einsetzte. Eine Rückruffunktion ist eine Funktion, die als Parameter einer anderen Prozedur übergeben wird. Die Rückruffunktion selbst kann auch eigene Parameter haben die auch übergeben werden. Dadurch kann man eine allgemeine Prozedur erstellen, deren Verhalten erst durch die übergebene Rückruffunktion bestimmt wird. Das Verhalten dieser allgemeinen Prozedur kann sich mit jedem Aufruf ändern.
Dadurch kann man eine Access-Anwendung erstellen, mit einer Art Programm-Schnittstelle – bei PHP Entwicklern auch als Hook bekannt – die später hinzugefügte Module nutzen können, um eigene Funktionen auszuführen. Dies bedeutet aber auch, dass eine vom Entwickler ungewollte Prozedur ausgeführt werden könnte die auch Schadcode enthalten kann. Man sollte den Einsatz nachfolgend vorgestellter Methode also genau planen.
Da beim Übergeben von Parametern Access nicht den Datentyp „Funktion“ kennt, muss man da ein wenig tricksen. Statt dessen übergibt man den Funktionsname als String und den/die erforderlichen Parameter. Wie genau das geht zeigt nachfolgender Code.
Erstellen Sie zu erst ein Standardmodul. Beginnen wir anschließend mit der „neutralen“ Prozedur.
Function apply_to(ByVal funktion As String, ByVal werte As Variant) AS Variant Dim ergebnis() As Variant Dim i As Long Dim e As Variant For i = LBound(werte) To UBound(werte) 'Schleife über alle Werte e = Eval(funktion & "(" & werte(i) & ")") 'rufe die Rückruffunktion mit Parameter auf ReDim Preserve ergebnis(i) 'Wertebereich des Rückgabearrays erweitern ergebnis(i) = e 'und hänge den Rückgabewert an das Array an. Next i apply_to = ergebnis End Function