Zugriff auf Kopfinformationen

23.08.2021

Einem FPScript-Wert, der von einem Datenobjekt stammt, kann FlexPro einen Verweis auf die Kopfinformationen dieses Datenobjektes anhängen. Sie können somit über den Wert auf die Attribute des Datenobjektes zugreifen. Die Kopfinformationen entsprechen den Eigenschaften des ValueObject-Objektes inklusive der Parameter-Liste. Wird ein FPScript-Wert also als Argument oder als Rückgabewert von einer in eine andere Formel durchgereicht, dann kann über den Wert auf die Kopfinformationen zugegriffen werden, ohne dass eine Objektreferenz vorhanden sein muss. FlexPro verwendet diese den Daten zugeordneten Kopfinformationen z. B. bei der Beschriftung von Achsen in einem Diagramm.

Beim Zuweisen der Kopfinformationen einer Formel an ihren Ergebniswert berücksichtigt FlexPro die Einstellung Kopfinformationen auf der Registerkarte Ergebnis der Formel. Sie können dort einstellen, ob Kopfinformationen nur hinzugefügt werden sollen oder, ob auch bereits vorhandene Kopfinformationen ersetzt oder entfernt werden sollen.

FPScript-Funktionen, die die als Argument übergebenen Daten nur modifizieren, z. B. die Filter-Funktionen, reichen die Kopfinformationen vom Argument an Ihr Ergebnis durch. Das Gleiche gilt für die Index-Operationen zur Auswahl einer Datenkomponente oder eines Listenelementes.

Folgender Code greift über die Variable x auf den Kommentar der X-Komponente des Datensatzes zu, dessen Wert x enthält:

Dim x = \Data\DataSet

x.CommentsX

Sie können auch schreibend auf ein Attribut zugreifen:

x.CommentsX = "Time"

x.UpperRangeLimitX = 1.3

Der Schreibzugriff erfolgt in diesem Fall nicht auf das zugrundeliegende Datenobjekt (im obigen Beispiel \Data\DataSet). Stattdessen wird x für die zu ändernde Eigenschaft eine lokale Kopie zugeordnet, die dann auf den zugewiesenen Wert gesetzt wird. Die lokale Kopie können Sie wieder entfernen, indem Sie die entsprechende Eigenschaft löschen:

x.CommentsX = ""

x.UpperRangeLimitX = ?

Die entsprechenden Attribute werden dann bei nachfolgenden Lesezugriffen wieder aus dem Datensatz entnommen.

Parameter

Die Parameterliste liegt immer vollständig als lokale Kopie vor. Wenn beim Schreibzugriff ein Name angegeben wird, für den noch kein Parameter existiert, dann wird dieser automatisch angelegt.

x.Parameters("MyParam") = 1.3

Weisen Sie den Wert Empty zu, um einen Parameter wieder zu löschen:

x.Parameters("MyParam") = Empty

Ob ein Parameter in der Liste existiert, können Sie mit der Index-Eigenschaft prüfen, diese liefert 0, wenn er nicht existiert:

x.Parameters.Index("MyParam")

Der Lesezugriff auf einen Parameter liefert nur dessen Wert. Die Einheit müssen Sie separat auslesen und zuweisen:

ChangeUnit(x.Parameters("MyParam"), x.Parameters("MyParam").Unit)

Berechnungen

Auf die Berechnungen ist nur Lesezugriff möglich. Der Lesezugriff auf eine Berechnung liefert nur deren Wert. Die Einheit müssen Sie separat auslesen und zuweisen:

ChangeUnit(x.Calculations("MyCalculation"), x.Calculations("MyCalculation").Unit)

Ob eine Berechnung in der Liste existiert, können Sie mit der Index-Eigenschaft prüfen, diese liefert 0, wenn diese nicht existiert:

x.Calculations.Index("MyCalculation")

Listen

Eine Besonderheit stellen Formeln dar, die eine Liste mit mehreren Datensätzen als Ergebnis liefern. Wenn die Formel lediglich Datensätze zu einer Liste bündelt, dann erhalten die Listenelemente die Kopfinformation der Datensätze, aus denen diese stammen:

Dim x = [Signal1, Signal2]
x.[0].Name    liefert "Signal1"

Hinweis Wenn Sie eine solche Liste als Ergebnis einer Formel zurückgeben und nicht möchten, dass die Kopfinformationen durch die der Formel überschrieben werden, dann müssen Sie auf der Registerkarte Ergebnis im Eigenschaften-Dialogfeld der Formel im Auswahlfeld Kopfinformationen die Auswahl Automatisch, Nur zuweisen, wenn nicht schon vorhanden oder Nie zuweisen treffen.

Wenn die Formel ein Ergebnis berechnet und dies als Liste zurückgibt, dann bestimmen die Einstellungen unter Listenelementnamen auf der Registerkarte Ergebnis der Formel wie die Listenelemente dieser Liste benannt werden sollen. Oft werden in den Listenelementnamen des Ergebnisses die Listenelementnamen der verrechneten Quelldaten eingebaut und müssen FlexPro daher bekannt sein. Dies erreichen Sie, indem Sie die Quelldaten der lokalen Variable SourceData zuweisen. FlexPro berücksichtigt diese beim Zuweisen der Elementnamen nach der Berechnung der Formel.

Dim SourceData = [Signal1, Signal2]
Integral(SourceData)

x.[0].Name    liefert "Signal1Integral", falls auf der Registerkarte Ergebnis der Formel die Option Automatisch eingestellt ist und die Formel selbst "Integral" heißt.

x.[0].CommentsX    falls auf der Registerkarte Ergebnis der Formel die Option Immer zuweisen eingestellt ist, liefert der Ausdruck den X-Kommentar der Formel, in der sich der FPScript-Code befindet. Ansonsten liefert er den X-Kommentar des Datensatzes Signal1 weil die Funktion Integral diesen in ihr Ergebnis durchreicht.

Komponenten

Wenn eine FPScript-Variable eine Komponente eines zusammengesetzten Datensatzes enthält, dann wird für die Eigenschaften, bei denen optional eine Komponente als Argument angegeben werden kann, die entsprechende Komponente als Vorgabe verwendet, wenn Sie das Argument weglassen:

Dim x = DataSet.X

x.Quantity    entspricht DataSet.Quantity(fpDataComponentX)

Es ist somit einfach möglich, auf die Attribute der jeweils passenden Komponente zuzugreifen.

Diese Beiträge könnten Sie ebenfalls interessieren