Auf dieser Seite sind praktische Anwendungsfälle für WollMux-Funktionen gesammelt.
Im FormularMax 4000 lässt sich über Ansicht/Funktionstester ein Dialog aufrufen, in dem Funktionen zusammengeklickt und ausprobiert werden können.
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")) )
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 "" ) )
Plausibilitätsprüfungen dienen dazu, den Benutzer bereits während des Ausfüllens eines Formulars zu warnen, dass seine Eingaben nicht den Vorgaben entsprechen.
MATCH(VALUE "<id>", ".{<X>,<Y>}")
- Beispiel:
MATCH(VALUE "bearbeitungsnummer", ".{7,10}")
MATCH(VALUE "<id>", "[0-9]{<X>,<Y>}")
- Beispiel:
MATCH(VALUE "bearbeitungsnummer", "[0-9]{1,10}")
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"))
FORMAT(SUM(VALUE "<id>", VALUE "<id>") MIN "<X>" MAX "<Y>")
- Beispiel
FORMAT(SUM(VALUE "a", VALUE "b") MIN "2" MAX "2")
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
AUTOFILL( SELECT( PRODUCT(VALUE "Betrag" VALUE "Tage") ONERROR "wird automatisch berechnet" ) ) )
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
Für die Ausgabe wurde in diesem Fall die erste Gruppe (mit $1 bezeichnet) gewählt.
Die weiteren möglichen Gruppen enthalten folgende Informationen:
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.
- Hinweis: 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).
FORMAT(VALUE "param" MIN "" MAX "")
- Beispiel:
FORMAT(SELECT(VALUE "param" ELSE("Y")) MIN "" MAX "")
- Beispiel:
"13,6" wird zu "dreizehn" BIND( FUNCTION(EXTERN(URL "java:de.muenchen.allg.d101.ZahlInWorten.zahlInWorten" PARAMS("Zahl"))) SET("Zahl" REPLACE(VALUE "ZuKonvertierendeZahl", ",\d+", "") ) )