2

Ich versuche, gespeicherte Funktionen aus einer Tabelle abzurufen und zur Laufzeit ausführen zu lassen. Ex MyTableFieldValue enthält:Ausführen gespeicherter Funktionen zur Laufzeit

$PARAMETER(MyClass,MyParameterName) 

Wo MyTableFieldValue ein Feldwert in einer Tabelle MyTable genannt wird. MyParameterName Wert in der Klasse MyClass ist eigentlich "ThisParameter"

Ich möchte, dies zu tun:

Set parameterName = MyTableFieldValue 

Wo sollte parameter "ThisParameter" enthalten.

Stattdessen enthält es

$PARAMETER(MyClass,MyParameterName). 

Wie ich Cache zwingen, um tatsächlich zu bewerten, was in MyTableFieldValue ist?

Antwort

2

Wenn Daten in der Tabelle nicht vom Benutzer bearbeitet werden Sie indirection Ihren Wert in der Dokumentation, wie beschrieben berechnen können

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_operators#GCOS_operators_indirection_arg

In Ihrem Beispiel wird es jedoch

Set @("parameterName = "_MyTableFieldValue) 

aussehen Dies ist unsicher, wenn Benutzer Daten in Ihrer Tabelle ändern können, da sie auf diese Weise so ziemlich jeden Code ausführen können. In diesem Fall sollten Sie die Zeichenfolge analysieren, den Klassennamen und den Parameternamen suchen und den $ Parameterfunktionsaufruf explizit ausführen.