CÓMO
Seleccionar varias preguntas en Survey123 almacena los nombres de las opciones seleccionadas como una cadena de caractres CSV, es decir, Opción1,Opción2,Opción3,Opción4. Si bien es útil almacenar los nombres únicos de las opciones, a veces queremos acceder fácilmente a una lista de las etiquetas de las opciones seleccionadas. Por ejemplo, los nombres de las plantas son Acacia, Banksia, Callistemon y Eucalyptus.
Tenemos más flexibilidad y libertad con las convenciones de nomenclatura al elegir etiquetas en comparación con los nombres. Para mejorar la legibilidad, la cadena CSV también debe reformatearse para incluir espacios entre las opciones, lo que lleva mucho tiempo cuando se hace a mano. Es posible crear un nuevo objeto en un XLSForm para cambiar el formato de las opciones seleccionadas usando la etiqueta en lugar del nombre. Podemos hacer esto combinando una serie de fórmulas en el campo Cálculo. En este ejemplo se utilizan los nombres científicos y comunes de algunas plantas australianas.
Como combinaremos múltiples funciones, es una buena idea comenzar en el punto final y seguir hacia fuera. Para empezar, usaremos las funciones jr:choice-name() y selected-at():
jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}')
Podemos usar la función concat() para unir todas las etiquetas de todas las respuestas seleccionadas en una cadena, con la puntuación deseada.
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}'))
A partir de aquí, necesitamos crear una serie de declaraciones if anidadas para filtrar las etiquetas por el número de respuestas elegidas. Establecemos la condición para que cada declaración if devuelva true si tenemos un valor o una opción en el número dado. El recuento comienza desde cero, por lo que '3' devolverá la cuarta opción seleccionada. Por ejemplo, si queremos mostrar las etiquetas cuando hemos seleccionado tres opciones, establecemos la condición en selected-at(${PlantSpeciesCSV},2). Si esta condición devuelve TRUE, entonces se genera nuestra cadena de caracteres concatenada, es decir, cepillo de botella Gold Dust Wattle, Silver Banksia y Willow. Si la condición es false, probamos la siguiente declaración if. Esto continúa hasta que la condición devuelve TRUE. Si no se cumple ninguna de las condiciones, podemos especificar que se devuelva una declaración personalizada como No Plants Observed , lo que nos indica que no se seleccionó ninguna opción.
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'))))
Un par de cosas a tener en cuenta:
Id. de artículo: 000031066
Obtener ayuda de expertos en ArcGIS
Descargar la aplicación de soporte de Esri