Posts tagged: anonyme Funktion

Rückruffunktionen (Callback Functions) in Access anwenden

By , 6. April 2012

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

Read more »

OfficeFolders theme by Themocracy