Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
speedy:30_modules:interpreter [2013/11/04 10:04] – Externe Bearbeitung 127.0.0.1speedy: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 228: Zeile 236:
 Ersetzt alle im Text vorkommenden Suchtextpassagen durch den Ersatztext.  Ersetzt alle im Text vorkommenden Suchtextpassagen durch den Ersatztext. 
  
 +**ADDLINE(Text1, Text2, ...);**\\
 +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 =====
 +
 +**PathAddBackslash(Path)**\\
 +Adds a backslash to the end of a string to create the correct syntax for a path. If the source path already has a trailing backslash, no backslash will be added.
 +
 +**PathAddExtension(Path, Ext)**\\
 +Adds a file extension to a path string.
 +
 +**PathAppend(Path, More)**\\
 +Appends one path to the end of another. 
 +
 +**PathBuildRoot(Path)**\\
 +Creates a root path from a given drive number.
 +
 +**PathCombine(Dir, File)**\\
 +Concatenates two strings that represent properly formed paths into one path, as well as any relative path pieces.
 +
 +**PathFileExists(File)**\\
 +Determines whether a path to a file system object such as a file or directory is valid. 
 +
 +**PathFindExtension(Path)**\\
 +Searches a path for an extension. 
 +
 +**PathFindFileName(Path)**\\
 +Searches a path for a file name. 
 +
 +**PathGetDriveNumber(Path)**\\
 +Searches a path for a drive letter within the range of 'A' to 'Z' and returns the corresponding drive number. 
 +
 +**PathRemoveBackslash(Path)**\\
 +Removes the trailing backslash from a given path.
 +
 +**PathRemoveExtension(Path)**\\
 +Removes the file extension from a path, if there is one.
 +
 +**PathRemoveFileSpec(Path)**\\
 +Removes the trailing file name and backslash from a path, if it has them. 
 +
 +**PathRenameExtension(Path, Ext)**\\
 +Replaces the extension of a file name with a new extension. If the file name does not contain an extension, the extension will be attached to the end of the string. 
 +
 +**PathSkipRoot(Path)**\\
 +Parses a path, ignoring the drive letter or UNC server/share path parts.
 +
 +**PathStripPath(Path)**\\
 +Removes the path portion of a fully qualified path and file.
 +
 +**PathStripToRoot(Path)**\\
 +Removes all parts of the path except for the root information. 
 +
 +**PathUndecorate(Path)**\\
 +Removes the decoration from a path string.
 +
 +**PathDecorate(Path, Decorate)**\\
 +Adds a decoration to the given path string.
 +
 +\\
 ===== Datum- und Zeitfunktionen ===== ===== Datum- und Zeitfunktionen =====
  
Zeile 257: 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 270: Zeile 356:
 Logische Verknüpfungen\\ Logische Verknüpfungen\\
 Sonstige Funktionen\\ Sonstige Funktionen\\
 +*/