HOW TO

Neuformatieren der Ergebnisse von Mehrfachauswahlfragen in Survey123

Last Published: February 10, 2025

Beschreibung

Bei Fragen vom Typ "Mehrfachauswahl" in Survey123 werden die Namen der ausgewählten Auswahloptionen als CSV-Zeichenfolge, d. h. "Option1,Option2,Option3,Option4", gespeichert. Es ist zwar hilfreich, die eindeutigen Namen von Auswahloptionen zu speichern, aber manchmal soll bequem auf eine Liste der Beschriftungen der ausgewählten Auswahloptionen zugegriffen werden können. Nehmen wir als Beispiel die Pflanzennamen "Acacia", "Banksia", "Callistemon" und "Eucalyptus".

Die Verwendung von Beschriftungen statt Namen bietet mehr Flexibilität und Spielraum bei den Benennungsregeln. Um die Lesbarkeit zu verbessern, muss die CSV-Zeichenfolge neu formatiert werden, um Leerzeichen zwischen den Optionen einzufügen. Dies ist zeitaufwendig, wenn es manuell erfolgt. Es ist möglich, ein neues Objekt in einem XLSForm zu erstellen, um die ausgewählten Auswahloptionen mit der Beschriftung anstelle des Namens neu zu formatieren. Zu diesem Zweck können wir eine Reihe von Formeln im Feld "Berechnung" kombinieren. In diesem Beispiel werden die wissenschaftlichen und Trivialnamen einiger australischer Pflanzen verwendet.

Lösung oder Problemumgehung

  1. Erstellen Sie den Fragetyp Mehrfachauswahl mit einer zugeordneten Auswahlliste. Notieren Sie sich die Anzahl der Auswahloptionen, da diese für den zweiten Teil benötigt wird. Wir können auch hier wählen, ob die Frage als erforderlich festgelegt werden soll. In diesem Fall ist keine Antwort erforderlich.

table1-au-plants-800px.png

  1. Erstellen Sie eine Textfrage, um die neu formatierten Beschriftungen zu speichern. Das Aussehen kann auf ausgeblendet festgelegt werden, wenn die Liste für Benutzer, die einen Survey durchführen, nicht angezeigt werden soll. Um diese Textfrage zu füllen, kombinieren wir die Formeln der selected-at()-, jr:choice-name()-, concat()- und if-Anweisungen.

table2-au-plants-800px.png

Erstellen der Berechnung

Da wir mehrere Funktionen kombinieren werden, empfiehlt es sich, am Endpunkt zu beginnen und nach außen fortzuschreiten. Zunächst verwenden wir die Funktionen "jr:choice-name()" und "selected-at()":

  • Die Funktion "jr:choice-name()" für eine gegebene Frage gibt die Beschriftung zurück, die dem Namen der Auswahl zugeordnet ist.
  • Die Funktion "selected-at()" muss verwendet werden, um die Beschriftung für einzelne Antworten zu extrahieren.
  • Die Frage muss in Anführungszeichen gesetzt werden.
jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}')

Wir können die Funktion "concat()" verwenden, um alle Beschriftungen aller ausgewählten Antworten in einer Zeichenfolge mit der gewünschten Interpunktion zu verbinden.

concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},1),  '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}'), ', and ',  jr:choice-name(selected-at(${PlantSpeciesCSV},3), '${PlantSpeciesCSV}'))

Dann müssen wir eine Reihe von verschachtelten if-Anweisungen erstellen, um die Beschriftungen nach der Anzahl der ausgewählten Antworten zu filtern. Wir legen die Bedingung für jede if-Anweisung so fest, dass sie "true" zurückgibt, wenn bei der angegebenen Zahl ein Wert oder eine Auswahl vorhanden ist. Die Zählung beginnt bei Null, sodass "3" die vierte ausgewählte Auswahl zurückgibt. Um beispielsweise die Beschriftungen anzuzeigen, wenn drei Auswahloptionen ausgewählt sind, legen wir die Bedingung auf "selected-at(${PlantSpeciesCSV},2)" fest. Wenn diese Bedingung "TRUE" zurückgibt, wird die verkettete Zeichenfolge ausgegeben, d. h.  "Gold Dust Wattle", "Silver Banksia" und "Willow Bottlebrush". Wenn die Bedingung nicht erfüllt ist, testen wir die nächste if-Anweisung. Dies wird so lange fortgesetzt, bis die Bedingung "TRUE" zurückgibt. Wenn keine der Bedingungen erfüllt ist, können wir festlegen, dass eine benutzerdefinierte Anweisung wie z. B. No Plants Observed zurückgegeben wird, die angibt, dass keine Auswahloptionen ausgewählt wurden.

if(selected-at($PlantSpeciesCSV},3),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ', 
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}'), ', and ', jr:choice-name(selected-at(${PlantSpeciesCSV},3),
'${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},2),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ',
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}'), 'and ', jr:choice-name(selected-at
(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},1),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), 'and ',
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},0),jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), 'No Plants Observed'))))

Folgende Punkte müssen berücksichtigt werden:

  • Achten Sie darauf, wie viele öffnende Klammern Sie verwenden. Es können Probleme aufgrund unvollständiger Klammerpaare auftreten, die schwierig ausfindig zu machen sein können. Vor allem, wenn viele Auswahloptionen vorhanden sind.
  • Die IF-Anweisungen müssen mit der Instanz beginnen, in der die meisten Auswahloptionen gewählt werden, und sich kaskadierend bis auf nur eine Auswahloption verringern. Ist dies nicht der Fall, gibt die erste IF-Anweisung "true" zurück, und die Ausgabezeichenfolge enthält nur die Beschriftung für die erste Auswahl, auch wenn mehrere Auswahloptionen gewählt wurden.

Artikel-ID: 000031066

Benachrichtigungen erhalten und Lösungen für neue oder häufige Probleme finden

Unser neuer KI-Chatbot stellt zusammengefasste Antworten und Videolösungen für Sie bereit.

Esri Support App herunterladen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Esri Support App herunterladen

Zu Download-Optionen wechseln