Repeticiones

Un XLSForm puede repetir un grupo de preguntas varias veces. A continuación, se ofrecen varios ejemplos de posibles usos de las repeticiones:

  • Capturar varias respuestas a la misma pregunta en una encuesta
  • Capturar conjuntos independientes de registros más pequeños, como el nombre, la edad y el sexo de todas las personas que integran una unidad familiar
  • Capturar varias preguntas de mapa en una sola encuesta
Una repetición para proporcionar varias respuestas a una sola pregunta

Cuando publique una encuesta que incluya repeticiones, cada repetición se creará como una tabla relacionada en su capa de entidades o una capa relacionada si su repetición contiene una pregunta geopoint, geotrace o geoshape.

Usar repeticiones

Para repetir un grupo de preguntas en Survey123 con el fin de capturar varias respuestas, siga estos pasos en la pestaña survey de su hoja de cálculo:

  1. En la fila en la que desee iniciar la repetición, escriba begin repeat en la columna type.
  2. Proporcione un nombre para la repetición en la columna name.
  3. En las filas siguientes, introduzca las preguntas que desea incluir en la repetición.
  4. Justo después de las preguntas, escriba end repeat en la columna type.

Esto crea en la encuesta un grupo de preguntas que puede agregar varias veces a los resultados. De manera predeterminada, no hay ninguna restricción en cuanto al número de veces que puede repetir las preguntas.

Las ubicaciones de puntos de la primera pregunta de geopunto en una repetición se pueden mostrar en cualquier mapa de su encuesta. Para obtener más información, consulte Superposiciones de puntos en mapas.

Restringir el número de registros repetidos

Para definir el número de repeticiones en Survey123, defina un recuento de repeticiones completando los siguientes pasos:

  1. En la fila en la que desee iniciar la repetición, escriba begin repeat en la columna type de la pestaña survey.
  2. Proporcione un valor numérico para el número de repeticiones en la columna repeat_count. También puede proporcionar un nombre de pregunta o un cálculo que devuelve un valor numérico.
  3. Proporcione un nombre para la repetición en la columna name.
  4. En las filas siguientes a esta entrada, introduzca las preguntas que desea incluir en la repetición.
  5. En la última fila, escriba end repeat en la columna type.

Cuando un usuario abre su encuesta, la repetición habrá creado ya el número de repeticiones definido en la columna repeat_count. No pueden crear ni eliminar repeticiones.

El usuario debe navegar por todas las repeticiones definidas por el valor repeat_count antes de enviar la respuesta de la encuesta; de lo contrario, no se enviarán todos los registros repetidos. Para asegurarse de que se envíen todas las repeticiones, plantéese hacer que las preguntas sean obligatorias en las repeticiones. Sin embargo, tenga en cuenta que las preguntas de las repeticiones que tengan aplicada una instrucción relevant o conditionally required no se evaluarán en el envío.

Nota:

El comportamiento de una repetición que tiene un recuento de repeticiones cambiante es distinto dependiendo de si el usuario está creando una nueva respuesta a la encuesta o editando una que se había enviado anteriormente.

Al crear una nueva respuesta a la encuesta, el recuento de repeticiones de una repetición que se reduce presenta un botón en la parte superior de una repetición para eliminar todos los registros existentes por encima del nuevo recuento de repetición que contiene datos; los registros vacíos se eliminan automáticamente. Independientemente de si se pulsa este botón, al enviar la respuesta a una encuesta, no se envían los registros que rebasen el nuevo recuento de repeticiones.

Al editar una respuesta existente a una encuesta, el recuento de repeticiones de una repetición que se reduce muestra un mensaje en la parte superior de la repetición para advertir de que el número de registros de repetición ha cambiado. El usuario no podrá enviar una respuesta editada que contenga un número de registros de repetición inferior al número original. Solo se permitirá agregar nuevos registros de repetición si allowAdds tiene el valor true en la columna bind::esri:parameters. Si allowAdds tiene el valor false, también se impide al usuario introducir un número de registros de repetición superior al número original.

Funciones de agregación

Puede utilizar encuestas con funciones añadidas que devuelven valores derivados de respuestas en repeticiones. Para ello, una pregunta fuera de la repetición hace referencia a una pregunta dentro de una repetición, Por ejemplo, la fórmula siguiente contará las respuestas a una pregunta única en repeticiones:

count(${repeated_question})

Puede usar las siguientes funciones para agregar respuestas:

  • recuento
  • suma
  • mín
  • máx
  • unir

Estas funciones solo se aplican a la respuesta de la encuesta actual. No se tienen en cuenta otros registros de la capa de entidades. También puede incluir preguntas utilizando suma y recuento en la repetición. Sin embargo, aunque suma y recuento se calculen para cada nuevo registro que se agrega a la repetición, los cálculos de entradas anteriores de la repetición no se actualizan automáticamente. Puede refrescar manualmente estos cálculos con el botón Refrescar situado junto a la pregunta. El uso de mínimo y máximo solo se admite fuera de la repetición.

Puede utilizar la función de unión para concatenar preguntas que devuelven una cadena de caracteres. Puede utilizar también la función de suma para conectar preguntas geopoint en la repetición como una pregunta geotrace o geoshape ajena a esta.

Para obtener información sobre el uso de estas funciones, consulte Fórmulas.

Devolver el índice de un registro repetido

Puede utilizar la función position(..) para devolver un entero que refleje el índice del registro de repetición en una repetición. Por ejemplo, el primer registro de una repetición devolverá 1, el segundo devolverá 2, y así sucesivamente. En el siguiente ejemplo, la función position(..) se usa en una pregunta de tipo entero oculta en una repetición:

Ejemplo de la función position(..) en XLSForm
Precaución:

La función position(..) siempre devuelve 0 en la aplicación de campo Survey123 o 1 en la aplicación web Survey123 cuando se utiliza fuera de una repetición o en un grupo que está dentro de una repetición.

También puede usar la función position(..) en una expresión. En el siguiente ejemplo, la función selected-at() utiliza position(..) para devolver la opción que se seleccionó en la pregunta select_multiple en la misma posición que el registro de repetición actual y mostrar la opción en la repetición como una nota. La función selected-at() empieza a contar las opciones desde cero, por lo que una se resta de position(..) para garantizar que los índices coincidan.

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

Ejemplo de las funciones position(..) y selected-at() en XLSForm

Puede usar la función position(..) junto con indexed-repeat() para extraer valores de preguntas de registros repetidos específicos.

Utilizar valores de repeticiones indexadas

Puede utilizar la función indexed-repeat() para devolver el valor de una pregunta específica de un registro de repetición. Requiere el nombre de la pregunta, el nombre de la repetición y el número de índice de la repetición, en ese orden. El siguiente ejemplo devuelve la respuesta a la pregunta room_no, para el tercer registro de la repetición floor:

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

Puede usar la función indexed-repeat() para las repeticiones dentro de repeticiones. Cuando se utiliza de esta forma, solo recibirá valores accesibles desde la repetición principal visible actualmente.

Precaución:

La función indexed-repeat() no se puede utilizar dentro de la repetición a la que hace referencia, ya que esto provocará una referencia circular. Por ejemplo, la siguiente expresión no se puede utilizar para un cálculo dentro de la repetición denominada defects:

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

Limitaciones conocidas

Existen algunas limitaciones conocidas y comportamientos inesperados relacionados con el uso de repeticiones en Survey123:

  • Si su encuesta contiene una repetición vacía, sin ninguna pregunta entre begin repeat y end repeat, no se enviará ninguna respuesta de la encuesta.
  • Si la encuesta contiene varias repeticiones, y una de estas repeticiones tiene una pregunta geopoint, geotrace o geoshape, la denominación de la relación a menudo se publicará desordenada.
  • Las repeticiones anidadas admiten solo las relaciones de uno a muchos y cada elemento secundario puede tener un único elemento principal.