Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
speedy:30_modules:interpreter [2017/05/04 18:03] – [Zeichenkettenverarbeitung] adminspeedy:30_modules:interpreter [2022/06/29 18:05] (aktuell) – [Zeichenkettenverarbeitung] speedy
Zeile 1: Zeile 1:
 +~~NOCACHE~~ 
 ====== Formelinterpreter ====== ====== Formelinterpreter ======
 +Der in speedyPDM integrierte Formelinterpreter ermöglicht es an vielen Stellen in der Konfiguration einfach Anpassungen vorzunehmen.
  
 ===== Formelsyntax ===== ===== Formelsyntax =====
- +Die Sytax des Formelinterpreters orientiert sich dabei an der Formelsyntax von Excelformeln. \\ 
-Eine Formel endet immer mit einem Semikolon. +Eine Formel beginnt mit einem Gleichheitszeichen gefolgt vom Formelausdruck und endet mit einem Semikolon. \\ 
 +<code> 
 +=FORMELAUSDRUCK; 
 +</code> 
 +\\ 
  
 ===== Datentypen ===== ===== Datentypen =====
- +Es stehen folgende Datentypen zur Verfügung: 
-  * Es stehen folgende Datentypen zur Verfügung: +
   * Fließkomma    * Fließkomma 
   * Ganzzahl    * Ganzzahl 
Zeile 16: Zeile 21:
  
 ===== Wertzuweisung ===== ===== Wertzuweisung =====
- 
 Variablen können in Formeln als konstante oder für Zwischenrechnungen verwendet werden. Variablen können in Formeln als konstante oder für Zwischenrechnungen verwendet werden.
 +<code>
 x1 = ref1 + IF( ref2 < 10, ref3 - 5, ref4 + 5 );  x1 = ref1 + IF( ref2 < 10, ref3 - 5, ref4 + 5 ); 
 +</code>
  
 ===== Arithmetik ===== ===== Arithmetik =====
Zeile 29: Zeile 35:
 |%%^%%|Potenzierung|%%3^2%%|9| |%%^%%|Potenzierung|%%3^2%%|9|
  
-Die Negation von Funktionen ist nicht zulässig:  +Die Negation von Funktionen ist nicht zulässig: \\ 
-Falsch: -SUM( x1; x2 ); +Falsch: -SUM( x1; x2 ); \\ 
-Richtig: 0 - SUM( x1, x2 );+Richtig: 0 - SUM( x1, x2 ); \\
  
  
-Negation von Zahlen oder Variablen innerhalb arimethischer Ausdrücke ist ebenfalls nicht zulässig: +Negation von Zahlen oder Variablen innerhalb arimethischer Ausdrücke ist ebenfalls nicht zulässig: \\ 
-Falsch: X1 + -X2; +Falsch: X1 + -X2; \\ 
-Richtig: X1 - X1;+Richtig: X1 - X1; \\
  
  
-Mehrfaches Potenzieren:+Mehrfaches Potenzieren: \\
 3^2^4; entspricht 3^(2^4); 3^2^4; entspricht 3^(2^4);
  
Zeile 75: Zeile 81:
 **IF(Prüfung, DannWert, SonstWert);** **IF(Prüfung, DannWert, SonstWert);**
  
-Liefert DannWert, wenn Prüfung TRUE ist. Ist DannWert nicht angegeben, wird TRUE zurückgegeben. +Liefert DannWert, wenn Prüfung TRUE ist. Ist DannWert nicht angegeben, wird TRUE zurückgegeben. \\ 
-Liefert SonstWert, wenn Prüfung FALSE ist. Ist SonstWert nicht angegeben, wird FALSE zurückgegeben.+Liefert SonstWert, wenn Prüfung FALSE ist. Ist SonstWert nicht angegeben, wird FALSE zurückgegeben.  \\
  
-Für die Erstellung komplexerer Bedingungen lassen sich maximal sieben IF-Funktionen verschachteln. +Für die Erstellung komplexerer Bedingungen lassen sich maximal sieben IF-Funktionen verschachteln. \\ 
-Sobald die Argumente DannWert und SonstWert ausgewertet sind, liefert IF den Wert, den diese Anweisungen zurückgeben.+Sobald die Argumente DannWert und SonstWert ausgewertet sind, liefert IF den Wert, den diese Anweisungen zurückgeben. \\
  
-Ist eines der an eine IF-Funktion übergebende Argument eine Matrix, so wird bei der Ausführung dieser IF-Anweisung jedes Element der Matrix ausgewertet. +Ist eines der an eine IF-Funktion übergebende Argumente eine Matrix, so wird bei der Ausführung dieser IF-Anweisung jedes Element der Matrix ausgewertet. \\ 
-Sind einige der als DannWert und SonstWert übergebenen Argumente ausführbare Funktionen, werden diese vollständig ausgeführt.+Sind einige der als DannWert und SonstWert übergebenen Argumente ausführbare Funktionen, werden diese vollständig ausgeführt. \\
  
-Beispiel: +Beispiel: \\ 
-IF(A==B, 100, 0); ergibt 100, wenn A identisch B ist. +<code>IF(A==B, 100, 0);</code> ergibt 100, wenn A identisch B ist. \\ 
-IF(Gesamtsumme>1000, "Mehr als Eintausend", "Weniger als Eintausend");+<code>IF(Gesamtsumme>1000, "Mehr als Eintausend", "Weniger als Eintausend");</code>
  
-**Beachten Sie, dass das weglassen des Dannwert oder des Sonstwert zu undefinierten zuständen in nachfolgenden Formeln führen kann.  +<note important>Beachten Sie, dass das weglassen des DannWert oder des SonstWert zu undefinierten zuständen in nachfolgenden Formeln führen kann. \\ 
-Sie sollten immer beide Fälle angeben, um Formelfehler in nachfolgenden Formeln zu vermeiden.  +Sie sollten immer beide Fälle angeben, um Formelfehler in nachfolgenden Formeln zu vermeiden.</note> 
-**+\\
  
 **SWITCH(Testwert, Vergleich1, Anweisung1, ..., VergleichX, AnweisungX);** **SWITCH(Testwert, Vergleich1, Anweisung1, ..., VergleichX, AnweisungX);**
  
-Liefert AnweisungN, wenn VergleichN identisch ist mit Testwert.+Liefert AnweisungN, wenn VergleichN identisch ist mit Testwert. \\
 Diese Funktion benötigt mindestens drei Argumente. Diese Funktion benötigt mindestens drei Argumente.
  
-Als Argument kann der String "DEFAULT" für den Standardfall verwendet werden. +Als Argument kann der String "DEFAULT" für den Standardfall verwendet werden. \\ 
- +Beispiel: \\ 
-Beispiel:+<code>
 SWITCH(BEN1_deu,  SWITCH(BEN1_deu, 
  "Frankreich", "Baguette",   "Frankreich", "Baguette", 
  "England", "Fish and Chips",  "England", "Fish and Chips",
  "DEFAULT", "Leberkäse");   "DEFAULT", "Leberkäse"); 
 +</code>
 ergibt "Leberkäse", wenn in BEN1_deu weder Frankreich noch England steht. ergibt "Leberkäse", wenn in BEN1_deu weder Frankreich noch England steht.
  
-**Beachten Sie, dass "DEFAULT" der letzte Vergleichswert ist, denn "DEFAULT" trifft __immer__ zu**+<note important>Beachten Sie, dass "DEFAULT" der letzte Vergleichswert ist, denn "DEFAULT" trifft __immer__ zu</note> 
  
 ===== Mathematik & Statistik ===== ===== Mathematik & Statistik =====
Zeile 229: Zeile 237:
  
 **ADDLINE(Text1, Text2, ...);**\\ **ADDLINE(Text1, Text2, ...);**\\
-Fügt eine beliebige Anzahl von Texten aneinander und trennt die einzelenen Texte durch einen Zeilenumbruch. Es entstehen keine Leerzeilen.+Fügt eine beliebige Anzahl von Texten aneinander und trennt die einzelnen Texte durch einen Zeilenumbruch. Es entstehen keine Leerzeilen.
  
 +**CONCAT_WS(separator,str1,str2,...);**\\
 +Fügt eine beliebige Anzahl von Texten aneinander und trennt die einzelnen Texte durch den separator, wenn der nächste Text nicht leer ist.
 \\ \\
 ===== Pfade und Dateinamen ===== ===== Pfade und Dateinamen =====
Zeile 318: Zeile 328:
 Gibt die Kalenderwoche zurück. Gibt die Kalenderwoche zurück.
    
 +\\
 +===== Datenbankfunktionen =====
 +
 +**SELECT("search_table", "search_column", search_value, "result_column");** \\
 +Führt eine Datenbankabfrage in folgender Form : \\ 
 +<code MySql>SELECT [result_column] FROM [search_table] WHERE [search_column] = search_value</code>
 +
 +**GETSETTING("key", "default");** \\
 +Gibt einen Konfigurationparameter zurück. \\
 +
 +**SETSETTING("key", "value");** \\
 +Setzt einen Konfiguraitonsparmeter. \\
 +
 +
 +/*
 ===== Einschränkungen ===== ===== Einschränkungen =====
  
Zeile 331: Zeile 356:
 Logische Verknüpfungen\\ Logische Verknüpfungen\\
 Sonstige Funktionen\\ Sonstige Funktionen\\
 +*/