Repetições

Um XLSForm pode repetir um grupo de perguntas várias vezes. Os exemplos de como repetições são utilizadas incluem o seguinte:

  • Capturar múltiplas respostas para a mesma pergunta em uma pesquisa.
  • Capturar coleções de registros menores, separadas, como o nome, idade e sexo de cada pessoa em uma casa.
  • Capturar múltiplas perguntas de mapa em uma pesquisa.
Repetir para fornecer várias respostas a uma única pergunta

Quando você publica uma pesquisa que inclui repetições, cada repetição é criada como uma tabela relacionada na camada de feição ou camada relacionada se a repetição tiver uma pergunta de ponto geográfico, traçado geográfico ou formato geográfico.

Utilizar repetições

Para repetir um grupo de perguntas no Survey123 para capturar múltiplas respostas, complete as seguintes etapas na guia pesquisa da sua planilha:

  1. Na linha onde você deseja começar a repetição, digite begin repeat na coluna type.
  2. Forneça um nome para a repetição na coluna name.
  3. Nas linhas abaixo desta entrada, insira as perguntas que deseja incluir na repetição.
  4. Imediatamente após as perguntas, digite end repeat na coluna type.

Um grupo de perguntas é criado na pesquisa que você pode adicionar repetidamente aos resultados da pesquisa. Por padrão, não há restrição quanto ao número de vezes que você pode repetir as perguntas.

As localizações do ponto da primeira pergunta de ponto geográfico em uma repetição podem ser exibidas em qualquer mapa da pesquisa. Para mais informações, consulte Sobreposições do ponto nos mapas.

Especifique o número de registros repetidos

Para especificar o número de registros repetidos dentro de uma repetição, defina uma contagem de repetições concluindo as seguintes etapas:

  1. Na linha onde deseja iniciar a repetição, digite begin repeat na coluna type da guia survey.
  2. Forneça um valor numérico para o número de repetições na coluna repeat_count. Você também pode fornecer um cálculo ou nome de pergunta que retorne um valor numérico.
  3. Forneça um nome para a repetição na coluna name.
  4. Nas linhas abaixo desta entrada, insira as perguntas que deseja incluir na repetição.
  5. Na última linha, digite end repeat na coluna type.

Quando um usuário abre a pesquisa, o número de repetições definido na coluna repeat_count já está criado. Usuários não podem criar ou excluir reptições.

Os usuários devem navegar até todos os registros repetidos definidos pelo valor repeat_count antes de enviar a resposta da pesquisa. Caso contrário, nem todos os registros repetidos serão enviados pois expressões e padrões não podem ser aplicados às repetições até que os usuários naveguem até o registro. Para garantir que todas as repetições sejam enviadas, você pode fazer perguntas obrigatórias nas repetições. Esteja ciente, porém, que as perguntas repetidas que têm uma declaração relevante ou condicionalmente exigida aplicada não são avaliadas no envio.

Anotação:

O comportamento de uma repetição com uma contagem de repetição variável é diferente, dependendo se o usuário está criando uma resposta de pesquisa ou editando uma que foi enviada anteriormente.

  • Ao criar uma resposta de pesquisa, o aplicativo de campo exibe um botão na parte superior da repetição para excluir todos os registros acima da nova contagem de repetições que contenham dados; registros em branco são excluídos automaticamente. Independentemente de este botão ser pressionado, o envio da resposta da pesquisa envia todos os registros, exceto os vazios.
  • Ao editar uma resposta de pesquisa existente, o aplicativo de campo exibe uma mensagem na parte superior da repetição para indicar que o número de registros não corresponde à contagem de repetições. Novos registros repetidos só podem ser adicionados se allowAdds estiver definido como true na coluna bind::esri:parameters. Registros que excedem a contagem de repetições não podem ser excluídos porque o aplicativo de campo não oferece suporte à exclusão de registros de repetições existentes. As respostas editadas da pesquisa podem ser enviadas mesmo quando o número de registros repetidos não corresponde à contagem de repetições.

Agregar funções

Você pode usar funções agregadas para retornar valores derivados de respostas em repetições. Para fazer isso, uma pergunta em uma repetição é referenciada por uma pergunta fora da repetição. Por exemplo, a seguinte fórmula conta as respostas para uma única pergunta através de repetições:

count(${repeated_question})

Você pode usar as seguintes funções para agregar respostas:

  • count
  • sum
  • min
  • max
  • join

Estas funções somente se aplicam à resposta da pesquisa atual. Elas não levam em conta outros registros na camada de feição. Você também pode incluir perguntas usando sum e count na repetição. No entanto, enquanto os valores sum e count forem calculados para cada novo registro adicionado à repetição, os cálculos das entradas anteriores na repetição não serão atualizados automaticamente. Você pode atualizar esses cálculos manualmente usando o botão Atualizar ao lado da pergunta. O uso de min e max somente é suportado fora da repetição.

Anotação:

Quando utilizada no aplicativo de campo Survey123, as funções sum, count, e join podem ser colocada dentro ou fora da repetição. Se sum, count, e join forem usados no aplicativo da web Survey123, eles deverão ser colocados fora da repetição. Um valor de sum, count e join de fora da repetição pode ser referenciado em um cálculo dentro da repetição.

Você pode usar a função join para concatenar perguntas que retornam uma string. Você também pode usar a função sum para conectar perguntas de ponto geográfico na repetição como uma pergunta de traçado geográfico ou de forma geográfica fora da repetição.

Para informações sobre como utilizar estas funções, consulte Fórmulas.

Retornar o índice de um registro de repetição

Você pode usar a função position(..) para retornar um inteiro refletindo o índice do registro de repetição em uma repetição. Por exemplo, o primeiro registro em uma repetição retornará 1, o segundo retornará 2 e assim por diante. No seguinte exemplo, a função position(..) é usada em uma pergunta de número inteiro oculto em uma repetição:

Exemplo da função position(..) no XLSForm
Aviso:

A função position(..) sempre retorna 0 no Survey123 field app ou 1 no Survey123 web app quando usado fora de uma repetição ou em um grupo que está em uma repetição.

Você também pode usar a função position(..) em uma expressão. No seguinte exemplo, a função selected-at() usa position(..) para retornar a opção que foi selecionada na pergunta de select_multiple na mesma posição do registro de repetição atual e exibir a opção na repetição como uma nota. A função selected-at() começa a contar opções do zero, então um é subtraído de position(..) para garantir a correspondência dos índices.

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

Exemplo das funções position(..) e selected-at() em um XLSForm

Você pode usar a função position(..) em combinação com indexed-repeat() para extrair valores de pergunta de registros de repetição específicos.

Usar valores de repetições indexadas

Você pode usar a função indexed-repeat() para retornar o valor de uma pergunta específica em um registro de repetição. Isso exige o nome da pergunta, o nome da repetição e o número do índice da repetição, nessa ordem. O seguinte exemplo retorna a resposta para a pergunta room_no, para o terceiro registro na repetição floor:

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

Você pode usar a função indexed-repeat() para repetições dentro de repetições. Quando usado desta forma, ela receberá apenas valores acessíveis da repetição principal atualmente visível.

Aviso:

A função indexed-repeat() não pode ser usada na repetição que faz referência, pois isso causará uma referência circular. Por exemplo, a seguinte expressão não pode ser usada para um cálculo na repetição denominada defects:

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

Limitações conhecidas

O seguinte são limitações conhecidas e comportamentos inesperados ao utilizar repetições no Survey123:

  • Se a sua pesquisa tiver uma repetição vazia, sem perguntas entre begin repeat e end repeat, haverá falha no envio de todas as respostas da pesquisa.
  • Se uma pesquisa tiver várias repetições e uma das repetições tiver uma pergunta de ponto geográfico, traçado geográfico ou forma geográfica, a nomenclatura do relacionamento poderá ser publicada fora de ordem.
  • As repetições aninhadas suportam somente relacionamentos de um para muitos, e cada filho pode ter somente um pai.
  • Repetições agrupadas com uma expressão na coluna relevant e uma expressão na coluna repeat_count limparão todos os dados salvos existentes no primeiro registro de repetição. Para evitar isso, incorpore a expressão relevante na expressão repeat_count para que nenhum registro de repetição seja criado quando a repetição não for relevante.
  • A edição de respostas individuais no aplicativo da web Survey123 ou site não é suportada para pesquisas que contêm repetições agrupadas.