Wiederholungen

In XLSForms kann eine Gruppe von Fragen mehrmals wiederholt werden. Nachfolgend sind Beispiele für die Verwendung von Wiederholungen aufgeführt:

  • Erfassen mehrerer Antworten auf die gleiche Frage in einem Survey
  • Erfassen separater, kleinerer Sammlungen von Datensätzen, z. B. Name, Alter und Geschlecht jeder Person in einem Haushalt
  • Erfassen mehrerer Kartenfragen in einem Survey
Wiederholen zum Bereitstellen mehrerer Antworten auf die gleiche Frage

Wenn Sie einen Survey mit Wiederholungen veröffentlichen, wird jede Wiederholung als zugehörige Tabelle im Feature-Layer erstellt oder als zugehöriger Layer, wenn die Wiederholung eine Geopunkt-, Geotrace- oder Geoshape-Frage enthält.

Verwenden von Wiederholungen

Um eine Gruppe von Fragen in Survey123 zu wiederholen und so mehrere Antworten zu erfassen, führen Sie auf der Registerkarte survey Ihres Arbeitsblattes die folgenden Schritte aus:

  1. Geben Sie in der Zeile, in der die Wiederholung beginnen soll, begin repeat in die Spalte type ein.
  2. Geben Sie in der Spalte name einen Namen für die Wiederholung an.
  3. Geben Sie in die Zeilen unterhalb dieses Eintrags die Fragen ein, die in die Wiederholung eingeschlossen werden sollen.
  4. Geben Sie unmittelbar nach den Fragen end repeat in die Spalte type ein.

Im Survey wird eine Gruppe von Fragen erstellt, die Sie den Survey-Ergebnissen wiederholt hinzufügen können. Standardmäßig können Sie die Fragen beliebig oft wiederholen. Es gibt keine Einschränkung für die Häufigkeit.

Punktpositionen aus der ersten Geopunkt-Frage in einer Wiederholung können auf jeder beliebigen Karte im Survey angezeigt werden. Weitere Informationen finden Sie unter Punkt-Überlagerungen auf Karten.

Einschränken der Anzahl von Wiederholungsdatensätzen

Um die Anzahl von Wiederholungen in Survey123 zu definieren, legen Sie eine Wiederholungsanzahl fest, indem Sie die folgenden Schritte befolgen:

  1. Geben Sie in der Zeile, in der die Wiederholung beginnen soll, begin repeat in die Spalte type der Registerkarte survey ein.
  2. Geben Sie in der Spalte repeat_count einen numerischen Wert für die Anzahl der Wiederholungen an. Sie können auch einen Fragennamen oder eine Berechnung angeben, die einen numerischen Wert zurückgibt.
  3. Geben Sie in der Spalte name einen Namen für die Wiederholung an.
  4. Geben Sie in die Zeilen unterhalb dieses Eintrags die Fragen ein, die in die Wiederholung eingeschlossen werden sollen.
  5. Geben Sie in der letzten Zeile end repeat in die Spalte type ein.

Wenn ein Benutzer den Survey öffnet, wurde die in der Spalte repeat_count festgelegte Anzahl der Wiederholungen bereits erstellt. Benutzer können weder Wiederholungen erstellen noch Wiederholungen löschen.

Der Benutzer muss alle Wiederholungen, die durch den Wert repeat_count definiert sind, vor dem Senden der Survey-Antwort durchlaufen. Andernfalls werden nicht alle Wiederholungsdatensätze übermittelt. Um sicherzustellen, dass alle Wiederholungen gesendet werden, können Sie Fragen in den Wiederholungen als erforderlich definieren. Beachten Sie jedoch, dass Fragen in Wiederholungen, auf die eine Anweisung des Typs "relevant" oder "bedingt erforderlich" angewendet wird, beim Senden nicht ausgewertet werden.

Hinweis:

Das Verhalten einer Wiederholung mit einer sich ändernden Wiederholungsanzahl hängt davon ab, ob der Benutzer eine Survey-Antwort erstellt oder eine bereits gesendete Antwort bearbeitet.

Wenn eine Survey-Antwort erstellt wird, verfügt die Wiederholungsanzahl für eine sich verringernde Wiederholung über eine Schaltfläche oberhalb einer Wiederholung, um alle Datensätze, die Daten enthalten und die neue Wiederholungszahl übersteigen, zu löschen; leere Datensätze werden automatisch gelöscht. Unabhängig davon, ob auf diese Schaltfläche geklickt wird, bewirkt das Senden der Survey-Antwort nicht, dass Datensätze die neue Wiederholungsanzahl übersteigen.

Wird eine vorhandene Survey-Antwort bearbeitet, zeigt die Wiederholungsanzahl für eine sich verringernde Wiederholung oberhalb der Wiederholung eine Meldung an; diese warnt den Benutzer, dass sich die Anzahl der Wiederholungsdatensätze geändert hat. Der Benutzer kann keine bearbeitete Antwort mit weniger als der ursprünglichen Anzahl von Wiederholungsdatensätzen senden. Weitere Wiederholungsdatensätze werden nur akzeptiert, wenn allowAdds in der Spalte bind::esri:parameters auf true festgelegt wurde. Wenn allowAdds auf false festgelegt ist, kann der Benutzer nicht mehr als die ursprüngliche Anzahl von Wiederholungsdatensätzen eingeben.

Aggregatfunktionen

Sie können Aggregationsfunktionen verwenden, um aus Antworten von Wiederholungen abgeleitete Werte zurückzugeben. Hierzu wird von einer Frage außerhalb einer Wiederholung auf eine Frage innerhalb der Wiederholung verwiesen. Die folgende Formel zählt beispielsweise die Antworten auf eine einzelne Frage in Wiederholungen:

count(${repeated_question})

Zum Aggregieren von Antworten können Sie die folgenden Funktionen verwenden:

  • count
  • sum
  • min
  • max
  • join

Diese Funktionen beziehen sich nur auf die aktuelle Survey-Antwort. Andere Datensätze im Feature-Layer werden nicht berücksichtigt. Sie können auch Fragen mit sum und count in der Wiederholung einschließen. Die Werte sum und count werden für jeden neuen Datensatz berechnet, der der Wiederholung hinzugefügt wird. Die Berechnungen für vorherige Einträge in der Wiederholung werden jedoch nicht automatisch aktualisiert. Diese Berechnungen können Sie mit der Schaltfläche Aktualisieren neben der Frage manuell aktualisieren. Die Verwendung von min und max wird nur außerhalb der Wiederholung unterstützt.

Hinweis:

Bei Verwendung in der mobilen Survey123-App können die Funktionen sum, count und join innerhalb oder außerhalb der Wiederholung platziert werden. Wenn sum, count und join in der Survey123-Web-App verwendet werden sollen, müssen sie außerhalb der Wiederholung platziert werden. Ein außerhalb der Wiederholung platzierter sum-, count- oder join-Wert kann in einer Berechnung innerhalb der Wiederholung referenziert werden.

Mithilfe der Funktion join können Sie Fragen verketten, die eine Zeichenfolge zurückgeben. Sie können auch die Funktion sum verwenden, um Geopunkt-Fragen in der Wiederholung als Geotrace- oder Geoshape-Frage außerhalb der Wiederholung zu verbinden.

Weitere Informationen zur Verwendung dieser Funktionen finden Sie unter Formeln.

Zurückgeben des Index eines Wiederholungsdatensatzes

Mit der Funktion position(..) können eine ganze Zahl zurückgeben lassen, die den Index des Wiederholungsdatensatzes in einer Wiederholung angibt. Der erste Datensatz in einer Wiederholung gibt 1 zurück, der zweite 2 usw. Im folgenden Beispiel wird die Funktion position(..) in einer ausgeblendeten Integer-Frage verwendet:

Beispiel der position(..)-Funktion in XLSForm
Vorsicht:

Die Funktion position(..) gibt immer 0 in der mobilen Survey123-App oder 1 in der Survey123-Web-App zurück, wenn sie außerhalb einer Wiederholung oder in einer Gruppe, die sich innerhalb einer Wiederholung befindet, verwendet wird.

Sie können die Funktion position(..) auch in einem Ausdruck verwenden. Im folgenden Beispiel verwendet die Funktion selected-at() position(..), um die Auswahlmöglichkeit, die in der Frage vom Typ "select_multiple" ausgewählt wurde, an der gleichen Position wie den aktuellen Wiederholungsdatensatz zurückzugeben und die Auswahlmöglichkeit in der Wiederholung als Hinweis anzuzeigen. Die Funktion selected-at() beginnt mit dem Zählen von Auswahlmöglichkeiten bei Null, sodass eins von position(..) abgezogen wird, um sicherzustellen, dass die Indizes übereinstimmen.

selected-at(${issues}, position(..)-1)

Beispiel der Funktionen "position(..)" und "selected-at()" in einem XLSForm

Sie können die Funktion position(..) in Kombination mit indexed-repeat() verwenden, um Fragenwerte aus bestimmten Wiederholungsdatensätzen zu extrahieren.

Verwenden von Werten aus indizierten Wiederholungen

Sie können die Funktion indexed-repeat() verwenden, um den Wert aus einer bestimmten Frage in einem Wiederholungsdatensatz zurückzugeben. Hierzu sind der Name der Frage, der Name der Wiederholung und die Indexnummer der Wiederholung in dieser Reihenfolge erforderlich. Das folgende Beispiel gibt die Antwort auf die Frage room_no für den dritten Datensatz in der Wiederholung floor zurück:

indexed-repeat(${room_no}, ${floor}, 3)

Sie können die Funktion indexed-repeat() für Wiederholungen innerhalb von Wiederholungen verwenden. Wird sie auf diese Art und Weise eingesetzt, empfängt sie nur Werte, die über die aktuell sichtbare übergeordnete Wiederholung zugänglich sind.

Vorsicht:

Die Funktion indexed-repeat() kann nicht in der Wiederholung verwendet werden, die sie referenziert, da es sonst zu einem Zirkelbezug kommt. Zum Beispiel kann der folgende Ausdruck nicht für eine Berechnung in der Wiederholung defects verwendet werden:

indexed-repeat(${defect_type}, ${defects}, 3)

Bekannte Einschränkungen

In Bezug auf die Verwendung von Wiederholungen in Survey123 bestehen die folgenden bekannten Einschränkungen und unerwarteten Verhaltensweisen:

  • Wenn ein Survey eine leere Wiederholung enthält und sich zwischen begin repeat und end repeat keine Fragen befinden, kann keine der Survey-Antworten übermittelt werden.
  • Wenn ein Survey mehrere Wiederholungen enthält und eine davon eine Geopunkt-, Geotrace- oder Geoshape-Frage aufweist, wird die Benennung der Beziehung möglicherweise falsch veröffentlicht.
  • Geschachtelte Wiederholungen unterstützen nur Eins-zu-Viele-Beziehungen. Zudem darf es zu jedem Child-Element nur ein Parent-Element geben.
  • Durch geschachtelte Wiederholungen mit einem Ausdruck in der Spalte relevant und einem Ausdruck in der Spalte repeat_count werden alle vorhandenen gespeicherten Daten im ersten Wiederholungsdatensatz gelöscht. Dies können Sie verhindern, indem Sie den relevanten Ausdruck in den Ausdruck repeat_count einbinden, sodass keine Wiederholungsdatensätze erstellt werden, wenn die Wiederholung nicht relevant ist.