Eine Formel ist ein beliebiger arithmetischer Ausdruck mit Operatoren, Konstanten, Variablen und Funktionsaufrufen:
Arithmetische Operatoren: * / + - Vergleichsoperatoren: < > <= >= != Logische Operatoren: & | Zuweisung: := Separator: ; Bedingter Ausdruck: if ... else
Ganze Zahl: 7 Reelle Zahl: 2,714 Wert mit Dimension: 3 cm Enumerationskonstante: Holz (richtet sich nach der aktuell eingestellten Sprache)
Variablen sind (vor allem) dynamische Datenfelder.
Es können jedoch auch lokale temporäre Variablen definiert werden, die nur innerhalb der Formel gültig sind. Hierfür ist am Anfang einer Bedingung eine Variablendefinition nach folgendem Beispiel vorzunehmen:
local a;
Anschließend erfolgt die Zuweisung des Wertes für a:
local a; a:=133m+LAENGE_GEWINDE;
(LAENGE_GEWINDE ist der Name eines Sachmerkmals, welches für die Berechnung im Kontext erreichbar ist (PlugSpace)) Auch hier wird der Bereich am Ende durch ein Semikolon begrenzt.
Jetzt folgt die eigentliche Formel bzw. Bedingung
local a; a:=133m+LAENGE_GEWINDE; a>200mm | (a<=200mm & a > 133mm)
Dieses Beispiel liefert nur ein TRUE/FALSE zurück und ist nur als Bedingung (z.B. für eine bedingte Tabelle oder eine Übergangsbeschreibung in den Geschäftsprozessen) zu gebrauchen.
Achtung:
Wenn bei bedingten Tabellen in der Bedingung eine Variablendefinition (local a;) vorhanden ist, darf in
die Tabelle keine Spalte eingefügt werden, da die Spalten vor der restlichen
Bedingung ausgewertet werden und somit mitten in der Bedingung auf einmal eine
Trennung durch ein Semikolon entstehen würde!
Die Meldung ist dann beim Verlassen der Zeile: Operand expected!
Die vorbereiteten Beispiele benutzen folgende Variablen:
| l | Länge | (Klasse CX_VALUE) |
| b | Breite | (Klasse CX_VALUE) |
| ma | Materialart | (Enumeration) |
| ID | Position einer technischen Komponente | (Enumeration) |
| d | Datum | (Klasse CX_DATE) |
| t | Zeit | (Klasse CX_TIME) |
| comment | ein Kommentar als Zeichenkette | (String) |
Bevor eine Formel berechnet werden kann, müssen den in der Formel vorkommenden Variablen Werte zugeordnet werden. Dies erfolgt automatisch mit den Objekten, die vorher im PlugSpace registriert wurden.
Die in einer Formel vorkommenden Variablen können selbst eine Formel oder eine Bedingungstabelle (Objekt CX_CONDITIONED_BAG) repräsentieren.
Das Formel-Objekt kann feststellen, welche Variablen es zur Berechnung benötigt (auch im Falle einer Formel in der Formel usw.).
Das Modul Formel testen konstruiert ein Fenster für die Eingabe der Variablenwerte. Dazu wird ein Objekt der Klasse CX_CONTAINER benutzt - ein Objekt dessen einzige Funktion darin besteht, beliebige dynamische Datenfelder zu halten.
Das Ergebnis einer Formel Berechnung kann ein Wert sein - bei einem arithmetischen
Ausdruck - oder TRUE/FALSE als
Ergebnis eines logischen Ausdrucks.
Eine Formel, die mit ; endet, liefert keinen
Wert.
Dieses Fenster dient der Pflege von Berechnungsformeln. Sie können eine Berechnungsformel auswählen, in dem Sie im Feld Nummer die gewünschte Nummer eingeben und mit RETURN bestätigen. Wenn Sie das Listenfenster aufrufen wollen, dann können Sie den Menüpunkt "Suchen" auswählen.
Über den Menüpunkt ‚Basisdaten – Berechnungsformeln’ gelangen Sie in das entsprechende Suchfenster, in dem alle aktuellen Berechnungsformeln angezeigt werden.
Mit einem Doppelklick auf einen der Einträge öffnet sich das Fenster ‚Berechnungsformel’ und Sie können den Eintrag bearbeiten.Mit OK speichern Sie die Änderungen ab.
Mit ‚Neu’ ist es mögliche eine neue Formel zu erstellen. Geben Sie im Feld ‚Nr.’ eine laufende Nummer oder einen Begriff vor und wählen Sie für das Feld ‚Name’ eine sinnvolle Bezeichnung aus.
Im Feld ‚Formel’ können Sie nun eine Formel vorgeben, die das System umsetzen soll.
Über den Punkt ‚Bearbeiten – Formel testen’ können Sie anschließend testen, ob die Formel richtig umgesetzt wird. Mit OK speichern Sie Ihre Eingaben ab.
| Menüpunkt | Beschreibung |
|---|---|
| Bearbeiten | - |
| : Berechnungsformel testen | Berechnung einer Formel bedeutet, dass ihr Ausdruck ausgewertet wird. Es öffnet sich dabei ein neues Fenster, in welchem die in der Formel vorkommenden Werte eingegeben werden können. (Formel testen) |
| : Interne Darstellung | Öffnet ein Fenster, das die interne Repräsentation der Formel in Postfix-Notation zeigt. Diese Codierung erlaubt eine sehr schnelle Berechnung. Bei bedingten Ausdrücken werden Bedingung und davon abhängige Terme in if ... fi bzw. if ... else ... fi eingeschlossen, mit fi als "schließende Klammer für jedes if. |
| : Schließen | Fenster schließen |
| Suchen | Listenfenster aufrufen |
| Beispiele | Mit dem Menüpunkt Beispiele bringen Sie eine Liste verschiedener Formeln zur Anzeige, die Sie mit Anklicken auswählen können. Sie können Formeln auch selbst eingeben oder verändern (vor Berechnung mit dem Button Eingabe speichern!). |
| Symbol | Beschreibung |
|---|---|
|
|
Neue Berechnungsformel anlegen |
|
|
Änderungen speichern |
|
|
Berechnungsformel löschen |
|
|
Berechnungsformel drucken |
|
|
Berechnung einer Formel bedeutet, dass ihr Ausdruck ausgewertet wird. Es öffnet sich dabei ein neues Fenster, in welchem die in der Formel vorkommenden Werte eingegeben werden können. (Formel testen) |
| Feld | Beschreibung |
|---|---|
| Nr. | Nummer der Formel |
| Name | Formelname |
| Formel | Formelausdruck |
| Knopf | Beschreibung |
|---|---|
| OK | Änderungen an der Berechnungsformel werden gespeichert. Wenn keine Änderungen getätigt wurden ist der Knopf gesperrt. |
| Neu | Das Eingabefenster wird geleert. |
| Löschen | Die angezeigte Berechnungsformel wird gelöscht. |
| Schließen | Das Fenster wird geschlossen, ohne Änderungen zu speichern. Wenn Sie die Änderungen sichern wollen, so müssen Sie den Knopf "OK" drücken. |
Dient der Auflistung der Berechnungsformeln.
| Symbol | Beschreibung |
|---|---|
|
|
Neue Berechnungsformel anlegen |
|
|
Berechnungsformel bearbeiten |
|
|
Berechnungsformel löschen |
|
|
Berechnungsformeln drucken |
|
|
Berechnungsformeln exportieren |
|
|
Alle Berechnungsformeln in die Zwischenablage kopieren |
| Feld | Beschreibung |
|---|---|
| Nr. | Nach Formelnummer suchen |
| Name | Nach Formelname suchen |
| Knopf | Beschreibung |
|---|---|
| Bearbeiten | Die aktuelle Berechnungsformel wird im Eingabefenster angezeigt. |
| Neu | Ein leeres Eingabefenster wird geöffnet. |
| Löschen | Die ausgewählte Berechnungsformel wird gelöscht. |
| Schließen | Das Fenster wird geschlossen. |
Dieses Fenster dient der Selektion einer Berechnungsformel.
| Feld | Beschreibung |
|---|---|
| Nr. | Nach Formelnummer suchen |
| Name | Nach Formelname suchen |
| Knopf | Beschreibung |
|---|---|
| OK | Das selektierte Berechnungsformel-Objekt wird übernommen. |
| Schließen | Die Selektion wird abgebrochen. |
| Feld | Beschreibung |
|---|---|
| Einfache Formeln | Arithmetische Ausdrücke werden berechnet. |
| Zuweisungen | Einer Variablen wird ein Wert zugewiesen. Dies kann der Hauptzweck der Formel sein, die auch nicht unbedingt ein Ergebnis liefern muss. |
| Falls...dann... | Auch Bedingungen werden als Ausdrücke aufgefasst. Beachten Sie: Die letzten drei Zeilen zeigen verschiedene Schreibweisen für die gleiche Berechnungsvorschrift |

formula.mod
Neben der Beschränkung der Zugriffsrechte über die Klasse und deren Datenfelder kann das Modul über einige der empfangenen Messages in seiner Nutzung beschränkt werden.
| Message | Parameter | Funktion | Security |
|---|---|---|---|
| FORMULA_CHANGED | Berechnungsformel-Objekt | Berechnungsformel wurde geändert | |
| FORMULA_CREATED | Berechnungsformel-Objekt | Berechnungsformel wurde erzeugt | |
| FORMULA_DELETED | Berechnungsformel-Objekt | Berechnungsformel wurde gelöscht |
| Message | Parameter | Funktion | Empfangs-Modul |
|---|---|---|---|
| EDIT_FORMULA | NULL oder Berechnungsformel-Objekt | Eingabefenster für Berechnungsformel aufrufen | Berechnungsformel-Editiermodul |
formuedt.mod
Neben der Beschränkung der Zugriffsrechte über die Klasse und deren Datenfelder kann das Modul über einige der empfangenen Messages in seiner Nutzung beschränkt werden.
| Message | Parameter | Funktion | Security |
|---|---|---|---|
| EDIT_FORMULA | NULL oder Berechnungsformel-Objekt | Eingabefenster für Berechnungsformel aufrufen | |
| FORMULA_CHANGED | Berechnungsformel-Objekt | Berechnungsformel wurde geändert | |
| FORMULA_CREATED | Berechnungsformel-Objekt | Berechnungsformel wurde erzeugt | |
| FORMULA_DELETED | Berechnungsformel-Objekt | Berechnungsformel wurde gelöscht | |
| FORMULA_SELECTED | Berechnungsformel-Objekt | Berechnungsformel wurde selektiert | |
| LIST_FORMULA | Collection Berechnungsformel-Objekte oder NULL | Listenfenster für Berechnungsformel aufrufen | |
| LOAD_FORMULA | Berechnungsformel importieren |
| Message | Parameter | Funktion | Empfangs-Modul |
|---|---|---|---|
| EDIT_FORMULA | NULL oder Berechnungsformel-Objekt | Eingabefenster für Berechnungsformel aufrufen | Berechnungsformel-Editiermodul |
| FORMULA_CHANGED | Berechnungsformel-Objekt | Berechnungsformel wurde verändert | |
| FORMULA_CREATED | Berechnungsformel-Objekt | Berechnungsformel wurde erzeugt | |
| FORMULA_DELETED | Berechnungsformel-Objekt | Berechnungsformel wurde gelöscht | |
| LIST_FORMULA | Listenfenster für Berechnungsformel aufrufen | Berechnungsformel-Editiermodul | |
| SHOW_FORMULA_SAMPLES | X-Position, Y-Position, Empfänger der Antwort | Beispiele für Berechnungsformeln | |
| SHOW_PREVIEW | Widget | Druckvorschau | Druckvorschau |
| TEST_FORMULA | Formel-Objekt | Formel testen | Modul Formel testen |
formusel.mod
Neben der Beschränkung der Zugriffsrechte über die Klasse und deren Datenfelder kann das Modul über einige der empfangenen Messages in seiner Nutzung beschränkt werden.
| Message | Parameter | Funktion | Security |
|---|---|---|---|
| FORMULA_CHANGED | Berechnungsformel-Objekt | Berechnungsformel wurde geändert | |
| FORMULA_CREATED | Berechnungsformel-Objekt | Berechnungsformel wurde erzeugt | |
| FORMULA_DELETED | Berechnungsformel-Objekt | Berechnungsformel wurde gelöscht | |
| SELECT_FORMULA | Collection Berechnungsformel-Objekte oder NULL, Empfänger der Antwort | Selektionsfenster für Berechnungsformel aufrufen |
| Message | Parameter | Funktion | Empfangs-Modul |
|---|---|---|---|
| EDIT_FORMULA | NULL oder Berechnungsformel-Objekt | Eingabefenster für Berechnungsformel aufrufen | Berechnungsformel-Editiermodul |
| FORMULA_SELECTED | Berechnungsformel-Objekt, Empfänger | Berechnungsformel wurde selektiert |