Bedingte Berichtselemente

Mit IF-Anweisungen können Sie Elemente eines Berichts in Abhängigkeit von einer Bedingung ein- oder ausblenden. Die IF-Anweisung können Sie verwenden, indem Sie einen Ausdruck in den Startplatzhalter ${if expression} einfügen, wobei ${/} das Ende des bedingten Segments kennzeichnet. Nachfolgend einige Beispiel für if-Anweisungen, mit denen Sie Teile eines Berichts ein- oder ausblenden können:

  • Bei Verwendung von ${if photo1} wird der Abschnitt nur angezeigt, wenn die Frage "photo1" beantwortet wurde.
  • Bei Verwendung von ${if integer1>0} wird der Abschnitt nur angezeigt, wenn die Antwort auf die Frage "integer1" eine positive Zahl aufweist.
  • Bei Verwendung von ${if ((geopoint1 | getValue:"y")>0)} wird der Abschnitt nur angezeigt, wenn der Geopunkt in der nördlichen Hemisphäre liegt.
  • Bei Verwendung von ${if multiple_choice1 | selected:"A"} wird der Abschnitt nur dann angezeigt, wenn in der Mehrfachauswahlfrage "A" ausgewählt wurde.
  • Bei Verwendung von ${if (repeat1 | getValue:"count")>=3} wird der Abschnitt nur dann angezeigt, wenn "repeat1" drei oder mehr Datensätze enthält.

Im folgenden Beispiel wird der Text in der zweiten Zeile nur dann im Bericht angezeigt, wenn high für die Priorität in der Einfachauswahlfrage ausgewählt wurde:

${if priority | selected:"high"}
High priority issues must be addressed within seven days.
${/}

Um zu bestimmen, ob eine Antwort einen Wert für eine Frage enthält, verwenden Sie eine IF-Anweisung, die den Feldnamen direkt referenziert und keine weiteren Operatoren enthält, z. B. ${if photo1}. Durch dieses Format wird sichergestellt, dass leere Zeichenfolgen, NULL-Werte und undefinierte Werte als leere Werte gelten. Dieses Format gilt für Feldtypen vom Typ Zeichenfolge, Zahl, Datum und Anlage. Wird dieses Format bei Wiederholungen verwendet, wird der Abschnitt angezeigt, sofern es mindestens ein Vorkommen in der Wiederholung gibt.

Führen Sie für die Verwendung von Bedingungsanweisungen mit Datums- und Zeitfragen Berechnungen mit der UNIX-Zeit (seit dem 1. Januar 1970 verstrichene Zeit in Millisekunden) durch. ${if (date1|getValue:"") < 1602735375000} zeigt z. B. den Abschnitt nur an, wenn der im Datumsfeld angegebene Zeitpunkt vor dem 14. Oktober 2020 liegt. Die Berichtssyntax weist keine Entsprechung für die today()- oder now()-XLSForm-Funktionen auf. Aus diesem Grund ist es nicht möglich, eine Bedingungsanweisung für Zeiten relativ zum Zeitpunkt des Druckens des Berichts zu verfassen.

IF-Anweisungen unterstützen die folgenden logischen Operatoren:

OperatorBeschreibung

||

"True", wenn eine der beiden Anweisungen "true" zurückgibt

&&

"True", wenn beide Anweisungen "true" zurückgeben

!

"True", wenn die Anweisung nicht "true" zurückgibt

==

"True", wenn beide Werte gleich sind

!=

"True", wenn beide Werte ungleich sind

>

Es wird ausgewertet, ob der erste Wert größer ist als der zweite Wert.

>=

Es wird ausgewertet, ob der erste Wert größer als oder gleich dem zweiten Wert ist.

<

Es wird ausgewertet, ob der erste Wert kleiner ist als der zweite Wert.

<=

Es wird ausgewertet, ob der erste Wert kleiner als oder gleich dem zweiten Wert ist.

Eine Tabelle kann in einem Bericht verwendet werden, um einzelne Wiederholungsdatensätze oder eine Zusammenfassung von Datensätzen zu präsentieren. Um mit einer Bedingungsanweisung eine Tabelle auszublenden, die keine Werte enthält, müssen die Platzhalter für den Beginn und das Ende außerhalb der Tabelle, unmittelbar vor und nach der Tabelle, platziert werden. Um mit einer Bedingungsanweisung nur die Kopfzeile der Tabelle anzuzeigen, wenn die Tabelle keine Werte enthält, muss der Platzhalter für den Beginn in der ersten Zelle der Tabelle und der Platzhalter für das Ende in der letzten Zelle der Tabelle platziert werden.