Ausdrücke in Formularen

Mithilfe von Ausdrücken können Sie in einem Survey das Standardverhalten von Antworten steuern. Mithilfe von Ausdrücken in der Spalte relevant können Sie festlegen, dass eine Frage oder eine Gruppe von Fragen basierend auf vorherigen Antworten ausgeblendet oder angezeigt wird. Wenn eine Frage durch einen Ausdruck in der Spalte relevant ausgeblendet wird, werden keine Daten für diese Frage gesendet.

Hinweis:

Wenn in der mobilen ArcGIS Survey123-App eine Antwort für eine Frage eingegeben wird, die später aufgrund eines relevant-Ausdrucks ausgeblendet wird, wird die Antwort gelöscht. Wenn die Frage wieder relevant wird, muss eine neue Antwort eingegeben werden. In der Web-App wird die Antwort nicht gelöscht. Wenn die Frage also wieder relevant wird, wird die zuvor eingegebene Antwort verwendet.

Sie können Ausdrücke auch für die Spalte readonly übernehmen. Die Eingabe für eine Frage oder Gruppe kann dann je nach Ergebnis des Ausdrucks deaktiviert werden. Die Spalte required unterstützt ebenfalls Ausdrücke, die bewirken, dass der Benutzer eine Frage im Survey nur unter bestimmten Bedingungen beantworten muss.

Hinweis:

Ausdrücke des Typs "readonly" werden in der Web-App nicht unterstützt.

Auf vorherige Fragen muss in Ausdrücken immer mit dem Format ${field_name} Bezug genommen werden.

Sichtbarkeit von Fragen

Sie können eine Frage mit einem Ausdruck unter Verwendung der Spalte body::esri:visible aus der Ansicht ausblenden. Diese Spalte blendet die Frage aus, wenn der enthaltene Ausdruck nicht mit "true" ausgewertet wird, und behält gleichzeitig den Inhalt der Frage bei. Der Ausdruck ${edit_location}='yes' führt beispielsweise dazu, dass die Frage nur angezeigt wird, wenn die Frage edit_location auf yes festgelegt ist.

Dieses Verhalten ist vergleichbar mit dem der Spalte relevant. Beide Spalten blenden eine Frage aus, bis der Ausdruck in der Spalte mit "true" ausgewertet wird. Der Hauptunterschied besteht darin, dass body::esri:visible den Wert einer durch den Ausdruck ausgeblendeten Frage nicht löscht und die vorhandenen Werte an den Feature-Layer übermittelt. Verwenden Sie die Spalte relevant anstelle von body::esri:visible, wenn Sie sicherstellen möchten, dass für die Frage nur dann Werte berechnet oder gespeichert werden, wenn die Frage relevant ist.

Wenn die Spalte body::esri:visible oder die Spalte relevant zum Steuern der Sichtbarkeit von Fragen verwendet wird, werden Erforderlichkeiten, Standardwerte, Beschränkungen und Eingabemasken nur dann angewendet, wenn die Frage sichtbar ist.

Sie können die Sichtbarkeit von Fragen auch mithilfe des Fragetyps "hidden" und des Aussehens "hidden" steuern. Diese können jedoch nicht mit einem Ausdruck gesteuert werden.

Hinweis:

Bild-, Audio- und Dateifragen können nicht mit der Spalte body::esri:visible ausgeblendet werden.

Einfache Ausdrücke

Die beste Verwendung solcher Ausdrücke besteht darin, das Verhalten oder die Sichtbarkeit der Frage zu ändern, wenn nicht zuvor eine bestimmte Antwort gegeben wurde. Mit dem folgenden Ausdruck wird beispielsweise überprüft, ob die Antwort auf die vorherige Frage "true" lautet:

${previous_question} = 'true'

Mit dem folgenden Beispiel wird überprüft, ob die Antwort auf die vorherige Frage größer oder gleich 100 war:

${previous_question} < 100

Die Werte in Fragen vom Typ select_multiple werden anders gespeichert als in anderen Fragetypen: Jede ausgewählte Antwort wird in der Reihenfolge der Auswahl (getrennt durch Kommas) aufgeführt. Wenn beispielsweise die Antworten A und B in dieser Reihenfolge ausgewählt werden, wird die Antwort als "A,B" dargestellt. Um in einem Ausdruck eine Frage vom Typ select_multiple zu verwenden, müssen Sie die Funktion selected verwenden. Im folgenden Beispiel wird überprüft, ob der Benutzer die vorherige Frage mit A beantwortet hat, und es funktioniert unabhängig von anderen ausgewählten Antworten:

selected(${previous_question}, 'A')

Mit der Funktion count-selected wird die Anzahl an Optionen ermittelt, die in einer Frage vom Typ select_multiple ausgewählt wurden, und eine Zahl bereitgestellt, die als Operator verwendet wird. Mit dem folgenden Beispiel wird überprüft, ob für die vorherige Frage mehr als zwei Antwortmöglichkeiten ausgewählt wurden:

count-selected(${previous_question}) > 2

Sie können die Funktion count-selected als Beschränkung für Bild- oder Dateifragen mit dem Aussehen multiline verwenden, um die Anzahl der gesendeten Dateien zu steuern.

Mathematischer Ausdruck

Im folgenden Beispiel werden mehrere Operatoren und Fragen kombiniert:

${previous_question} + ${other_previous_question} <= 100

Bei Verwendung mathematischer Operatoren darauf müssen Sie möglicherweise Werte in Zahlen umwandeln. Im vorherigen Beispiel wurde davon ausgegangen, dass es sich bei previous_question und other_previous_question um ganze Zahlen oder Dezimalzahlen handelt. Wenn es sich bei den Fragetypen jedoch um Zeichenfolgen handelt, können Sie sie wie folgt umwandeln:

int(${previous_question}) + int(${other_previous_question}) <= 100

Mathematische Ausdrücke können auch auf Fragen vom Typ date angewendet werden, die als Unixzeit gespeichert werden, der seit dem 1. Januar 1970 verstrichene Zeitraum in Millisekunden. Mit dem folgenden Ausdruck wird eine Frage nur dann angezeigt, wenn die Antwort auf die vorherige Frage mehr als zwei Wochen vor dem heutigen Tag gegeben wurde:

if( ${previous_question}='',false,today() - ${previous_question} > 1000*60*60*24*15)

Reguläre Ausdrücke

Bei einem regulären Ausdruck handelt es sich um eine Folge von Zeichen, die verwendet wird, um in Zeichenfolgen Muster abzugleichen. Wenn das Muster in Survey123 übereinstimmt, gibt der Ausdruck "true" zurück, andernfalls, wenn das Muster nicht übereinstimmt, gibt der Ausdruck "false" zurück.

Sie können reguläre Ausdrücke in Spalten verwenden, die es zulassen, dass Ausdrücke das Verhalten einer Frage ändern, es sei denn, die von einer anderen Frage bereitgestellte Zeichenfolge weist ein bestimmtes Format auf. Wenn das folgende Beispiel in die Spalte vom Typ relevant eingefügt wird, wird eine Frage nur dann angezeigt, wenn die Antwort auf eine andere Frage aus einem Buchstaben bestand:

regex(${question},'[A-Za-z]')

Wenn das folgende Beispiel in die Spalte choice_filter einer Frage vom Typ "select_one" für Straßennamen eingefügt wird, wird nur eine Auswahl von Straßen angezeigt, die in der Liste citystreets enthalten ist, die dem Ortsnamen entspricht, der in einer früheren Frage mit dem Namen city ausgewählt wurde:

regex(citystreets,${city})

Weitere Informationen zu regulären Ausdrücken finden Sie unter Formeln.