Funktionen des WollMux in der Praxis
Auf dieser Seite sind praktische Anwendungsfälle für WollMux-Funktionen gesammelt.
Tip: Funktionstester
Im FormularMax 4000 lässt sich über Ansicht/Funktionstester ein Dialog aufrufen, in dem Funktionen zusammengeklickt und ausprobiert werden können.
Allgemein
Leere Eingabe für Berechnungen als 0 behandeln
Die Felder a, b und c enthalten Zahlen, die z.B. mit Hilfe der SUM-Funktion addiert werden sollen. Dabei soll eine leere Eingabe eines Feldes als 0 behandelt werden:
SUM( SELECT(VALUE "a" ELSE("0"))
SELECT(VALUE "b" ELSE("0"))
SELECT(VALUE "c" ELSE("0")) )
Zahlen formatieren mit Tausenderpunkt
Funktion zum Formatieren von positiven oder negativen Zahlen mit Tausenderpunkt, sowohl mit Komma als auch ohne Komma.
CAT(
REPLACE(
REPLACE(VALUE "Steuerelement" ",\d*" "")
"(?<=\d)(?=(\d\d\d)+$)"
"."
)
IF(
MATCH(VALUE "Steuerelement" "-?(\d+)(,\d*)$")
THEN (REPLACE(VALUE "Steuerelement" "-?(\d+)(,\d*)$" "$2"))
ELSE ""
)
)W
PLAUSI
Plausibilitätsprüfungen dienen dazu, den Benutzer bereits während des Ausfüllens eines Formulars zu warnen, dass seine Eingaben nicht den Vorgaben entsprechen.
Eingabe muss aus mindestens X und höchstens Y beliebigen Zeichen bestehen
MATCH(VALUE "<id>", ".{<X>,<Y>}")
Beispiel:
MATCH(VALUE "bearbeitungsnummer", ".{7,10}")
Eingabe muss aus mindestens X und höchstens Y Ziffern bestehen
MATCH(VALUE "<id>", "[0-9]{<X>,<Y>}")
Beispiel:
MATCH(VALUE "bearbeitungsnummer", "[0-9]{1,10}")
Eingegebene Zahl muss durch X teilbar sein
NUMCMP(VALUE "Zahl" PRODUCT( DIVIDE( VALUE "Zahl" BY "<X>" MIN "0" MAX "0" ) "<X>"))
Beispiel:
NUMCMP(VALUE "Zahl" PRODUCT( DIVIDE( VALUE "Zahl" BY "100" MIN "0" MAX "0" ) "100"))
AUTOFILL
Summenberechnung mit min. X bis max. Y Kommastellen
FORMAT(SUM(VALUE "<id>", VALUE "<id>") MIN "<X>" MAX "<Y>")
Beispiel:
FORMAT(SUM(VALUE "a", VALUE "b") MIN "2" MAX "2")
Fehleranzeigen abfangen
Ergänzung → Die Werte “a” und “b” sollten einen AUTOFILL-Wert von 0 haben. Ist der Wert "", bringt die Funktion einen Fehler.
Ein anderer Lösungsansatz ist, die ONERROR-Funktion dahingehend zu verwenden dass ein Hinweistext ausgegeben wird, z.B.
SELECT(
FORMAT(SUM(VALUE "<id>", VALUE "<id>") MIN "<X>" MAX "<Y>")
ONERROR("wird automatisch berechnet")
Am elegantesten funktioniert diese Lösung, wenn in der Formularbeschreibung zusätzlich beim enstprechenden Feld der Parameter READONLY auf true gesetzt wird:
Beispiel:
(
LABEL "Gesamt"
TYPE "textfield"
ID "Gesamtsumme"
TIP ""
READONLY "true"
AUTOFILL(
SELECT(
PRODUCT(VALUE "Betrag" VALUE "Tage")
ONERROR "wird automatisch berechnet`
)
)
)
Den Namen auf den ersten Buchstaben (mit anschließendem Punkt) kürzen
CAT(
REPLACE(VALUE "<ID>", "(.)(.*+)", "<GRUPPE>")
"."
)`
Beispiel:
CAT(
REPLACE(VALUE "Nachname", "(.)(.*+)", "$1")
"."
)
Eine genauere Beschreibung der REPLACE-Funktion und Übersicht zu regulären Ausdrücken finden Sie auf der Wiki-Seite "Konfigurationsdatei wollmux.conf".
Erklärung:
In diesem regulären Ausdruck wird von der Verwendung von Gruppen Gebrauch gemacht. Jede Klammer stellt eine Gruppe dar. Die erste Gruppe "(.)" enthält nur den ersten Buchstaben und die zweite Gruppe "(.*+)" enthält den zweiten (falls überhaupt vorhanden) und alle weiteren Buchstaben.
Für die Ausgabe wurde in diesem Fall die erste Gruppe (mit $1 bezeichnet) gewählt.
Die weiteren möglichen Gruppen enthalten folgende Informationen:
Nachname = Müller | |
---|---|
$0 | Müller |
$1 | M |
$2 | üller |
TRAFO
Transformationen dienen dazu, im Formular einen anderen Wert darzustellen als der Benutzer eingegeben hat. Dies wird typischerweise verwendet, um Werte automatisch auf bestimmte Weise zu formatieren. TRAFOs werden im FormularMax 4000 über den Reiter Einfügungen gesetzt.
TRAFOs bekommen immer den Feldwert des Feldes übergeben auf das sie gesetzt sind. Es kann also unabhängig von der ID des Feldes immer
VALUE "param"
verwendet werden (“param” ist hier kein Platzhalter für die Feld-ID).
Zahl mit genau X Nachkommastellen darstellen
FORMAT(VALUE "param" MIN "<X>" MAX "<X>")
Beispiel:
FORMAT(VALUE "param" MIN "2" MAX "2")
wie oben, nur falls die Eingabe leer ist, nimm Y an
FORMAT(SELECT(VALUE "param" ELSE("Y")) MIN "<X>" MAX "<X>")
Beispiel:
FORMAT(SELECT(VALUE "param" ELSE("0")) MIN "2" MAX "2")
Zahl in Worten mit abgeschnittenen Nachkommanstellen
“13,6” wird zu “dreizehn”
BIND(
FUNCTION(EXTERN(URL "java:de.muenchen.allg.d101.ZahlInWorten.zahlInWorten" PARAMS("Zahl")))
SET("Zahl"
REPLACE(VALUE "ZuKonvertierendeZahl", ",\d+", "")
)
)