Korzystając z instrukcji if (jeżeli), można wyświetlać lub ukrywać warunkowo elementy raportu. Instrukcja if (jeżeli) może być używana przez wpisanie wyrażenia w początkowym symbolu zastępczym ${if expression}, gdzie ciąg ${/} wskazuje koniec segmentu warunkowego. Poniżej przedstawiono kilka przykładów instrukcji if (jeżeli), które mogą być używane do wyświetlania lub ukrywania części raportu:
- ${if photo1} wyświetla sekcję tylko wtedy, gdy udzielono odpowiedzi na pytanie photo1.
- ${if integer1>0} wyświetla sekcję tylko wtedy, gdy odpowiedź na pytanie integer1 była liczbą dodatnią.
- ${if ((geopoint1 | getValue:"y")>0)} wyświetla sekcję tylko wtedy, gdy punkt geograficzny znajduje się na półkuli północnej.
- ${if multiple_choice1 | selected:"A"} wyświetla sekcję tylko wtedy, gdy dla pytania z wieloma możliwościami odpowiedzi wybrano opcję A.
- Instrukcja ${if (repeat1 | getValue:"count")>=3} wyświetla sekcję tylko wtedy, gdy powtórzenie repeat1 zawiera trzy lub większą liczbę rekordów.
W poniższym przykładzie tekst w drugim wierszu będzie wyświetlany w raporcie tylko wtedy, gdy jako priorytet pytania typu select one (wybierz jedną) zostanie wybrana wartość high:
${if priority | selected:"high"}
High priority issues must be addressed within seven days.
${/}
Aby określić, czy odpowiedź zawiera wartość pytania, należy użyć instrukcji if (jeżeli) odwołującej się bezpośrednio tylko do nazwy pola, tzn. bez jakichkolwiek innych operatorów, na przykład ${if photo1}. Dzięki temu formatowi puste ciągi znakowe, wartości null i wartości niezdefiniowane są traktowane jako wartości puste. Ten format ma zastosowanie do pól znakowych, liczbowych, daty i załącznika. Jeśli ten format zostanie użyty z powtórzeniami, sekcja ta pojawi się, gdy wystąpi co najmniej jedno wystąpienie w powtórzeniu.
Aby użyć instrukcji warunkowych z pytaniami dotyczącymi daty i czasu, wykonaj obliczenia w czasie epoki (liczba milisekund od 1 stycznia 1970r.). Na przykład instrukcja ${if (date1|getValue:"") < 1602735375000} wyświetla sekcję tylko wtedy, gdy wartość w polu daty jest wcześniejsza niż 14 października 2020 r. Składnia raportu nie ma odpowiednika funkcji XLSForm today() ani now(), dlatego nie ma możliwości utworzenia instrukcji warunkowej dla czasów względem chwili wydruku raportu.
W instrukcjach if (jeżeli) obsługiwane są następujące operatory logiczne:
Operator | Opis |
---|---|
|| | Wartość prawda (true), jeśli jedna z dwóch instrukcji zwraca wartość prawda (true) |
&& | Wartość prawda (true), jeśli obie instrukcje zwracają wartość prawda (true) |
! | Wartość prawda (true), jeśli instrukcja nie ma wartości prawda (true) |
== | Wartość prawda (true), jeśli dwie podane wartości są sobie równe |
!= | Wartość prawda (true), jeśli dwie podane wartości nie są sobie równe |
> | Ocenia, czy pierwsza wartość jest większa niż druga |
>= | Ocenia, czy pierwsza wartość jest większa lub równa drugiej. |
< | Ocenia, czy pierwsza wartość jest mniejsza niż druga |
<= | Ocenia, czy pierwsza wartość jest mniejsza lub równa drugiej |
Tabeli można użyć w raporcie do przedstawienia poszczególnych rekordów powtórzeń lub podsumowania rekordów. Aby użyć instrukcji warunkowej w celu ukrycia tabeli, która nie ma wartości, początkowy oraz końcowy symbol zastępczy należy umieścić poza tabelą — bezpośrednio przed nią i po niej. Aby użyć instrukcji warunkowej do wyświetlenia tylko wiersza nagłówka tabeli, gdy tabela nie ma wartości, początkowy symbol zastępczy należy umieścić w pierwszej komórce tabeli, a końcowy symbol zastępczy — w ostatniej komórce tabeli.