Have any questions?
+44 1234 567 890
Appendix B. Formelsprache
B. Formelsprache
An vielen Stellen unterstützt ReportServer die Eingabe von Formeln. Formelausdrücke sind immer durch die Zeichenfolge ${} umschlossen. Der eigentliche Ausdruck steht dabei zwischen den geschweiften Klammern. Zum Einsatz kommt hierbei die Unified Expression Language (EL) standardisiert in JSR-245 (https://www.jcp.org/en/jsr/detail?id=245 und http://www.oracle.com/technetwork/java/unifiedel-139263.html).
In Formelausdrücken können einfache Berechnungen, sowie String-Funktionen benutzt werden. Der Ausdruck ${3 + 5} berechnet beispielsweise die Zahl 8. Je nach Kontext stehen Ihnen in Ausdrücken unterschiedliche Objekte/Ersetzungen zur Verfügung.
Neben den Grundrechenarten sind folgende mathematische Operationen implementiert:
math:random() | Gibt eine Zufällige Zahl zwischen 0 und 1 zurück |
math:sin(Double) | Berechnet den Sinus |
math:cos(Double) | Berechnet den Kosinus |
math:tan(Double) | Berechnet den Tangens |
math:abs(Double) | Gibt den Ganzzahlwert einer Zahl zurück |
math:ceil(Double) | Rundet die übergebene Zahl auf |
math:floor(Double) | Rundet die übergebene Zahl ab |
math:round(Double) | Rundet die übergebene Zahl |
math:max(Double, Double) | Gibt den größeren Wert zurück |
math:min(Double, Double) | Gibt den kleineren Wert zurück |
math:pow(Double, Double) | Gibt den ersten Wert hoch den zweiten zurück |
math:log(Double) | Gibt den natürlichen Logarithmus zurück |
math:exp(Double) | Berechnet e hoch Wert |
math:sqrt(Double) | Gibt die Wurzel zurück |
math:signum(Double) | Berechnet die Signum Funktion |
Zur Verarbeitung von Zeichenketten stehen neben Methoden des Java-String-Objekts die folgenden Helfermethoden zur Verfügung:
sutils:left(String, int) | Gibt die ersten Zeichen des Strings zurück |
sutils:right(String, int) | Gibt die letzten Zeichen des Strings zurück |
Für bedingte Ausdrücke können Sie den ternären Ausdrucksoperator
Bedingung ? Ausdruck, falls wahr : Ausdruck, falls falsch
verwenden. So liefert folgender Ausdruck
${math:random() < 0.5 ? true : false}
einen Wahrheitswert zurück. Ist die Zufallszahl kleiner 0.5 (dies tritt in 50% der Fälle auf) wird WAHR zurückgegeben, ansonsten falsch.
B.1.1. Arbeit auf Objekten
Haben Sie ein Objekt per Ersetzung übergeben bekommen, können Sie auf diesem Methoden aufrufen. In Filtern oder in Datumsparametern stehen Ihnen beispielsweise das Objekt "today" zur Verfügung. Um eine Methode des Objekts aufzurufen schreiben Sie ${today.METHODENNAME()}. Today gibt ein Datum ausgehend vom aktuellen Datum zurück. Möchten Sie hingegen den ersten des aktuellen Monats auswählen schreiben Sie ${today.firstDay()}. Folgende Methoden stehen Ihnen auf dem today Objekt zur Verfügung.
firstDay | Setzt den Kalender auf den Mitternacht des ersten Tages des aktuellen Monats. |
lastDay | Setzt den Kalender auf die letzte Sekunde des letzten Tages des aktuellen Monats. |
addDays | Setzt den Kalender die angegebene Zahl an Tagen weiter/zurück. |
addMonths | Setzt den Kalender die angegebene Zahl an Monaten weiter/zurück. |
addYears | Setzt den Kalender die angegebene Zahl an Jahren weiter/zurück. |
setDay | Setzt den Kalender auf den angegebenen Tag. |
setMonth | Setzt den Kalender auf den angegebenen Monat. |
setYear | Setzt den Kalender auf das angegebene Jahr. |
clearTime | Setzt die Uhrzeit auf Mitternacht zurück. |
addHours | Setzt den Kalender die angegebene Zahl an Stunden weiter/zurück. |
addMinutes | Setzt den Kalender die angegebene Zahl an Minuten weiter/zurück. |
addSeconds | Setzt den Kalender die angegebene Zahl an Sekunden weiter/zurück. |
setHours | Setzt die Uhrzeit auf die angegebene Stunde. |
setMinutes | Setzt die Uhrzeit auf die angegebenen Minuten. |
setSeconds | Setzt die Uhrzeit auf die angegebenen Sekunden. |
format | Diese Funktion wandelt das Datum in einen Text im angegebenen Format. Dies ist notwendig, um Vergleiche auf Spalten vorzunehmen die nicht vom Typ Datum sind (vgl. Tabelle Datumsformat in Anhang C.). |
Beispiel: Sie möchten alle Rechnungen des vergangenen Monats filtern. Dazu können Sie folgenden Einschlussfilter definieren:
${today.firstDay().addMonths(-1)} - ${today.firstDay().addSeconds(-1)}