Skip to content

Latest commit

 

History

History
143 lines (112 loc) · 5.04 KB

Funktionen_des_WollMux_in_der_Praxis.mediawiki

File metadata and controls

143 lines (112 loc) · 5.04 KB

Auf dieser Seite sind praktische Anwendungsfälle für WollMux-Funktionen gesammelt.

Table of Contents

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 ""
  )
 )

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
   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:

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.

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).

Zahl mit genau X Nachkommastellen darstellen

FORMAT(VALUE "param" MIN "" MAX "")

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 "" MAX "")

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+", "") ) )