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.
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:
- Na linha onde você deseja começar a repetição, digite begin repeat na coluna type.
- Forneça um nome para a repetição na coluna name.
- Nas linhas abaixo desta entrada, insira as perguntas que deseja incluir na repetição.
- 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.
Restringir o número de registros repetidos
Para definir o número de repetições no Survey123, configure uma contagem de repetição completando as seguintes etapas:
- Na linha onde deseja iniciar a repetição, digite begin repeat na coluna type da guia survey.
- 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.
- Forneça um nome para a repetição na coluna name.
- Nas linhas abaixo desta entrada, insira as perguntas que deseja incluir na repetição.
- 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.
O usuário deve navegar por todas as repetições definidas pelo valor repeat_count antes que a resposta da pesquisa seja enviada; caso contrário, nem todos os registros repetidos serão enviados. 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, a contagem de repetição para uma repeat being reduzida tem um botão na parte superior de uma repetição para excluir todos os registros acima da nova contagem de repetição que contém dados neles; registros em branco são excluídos automaticamente. Independentemente se este botão é pressionado, enviar a resposta da pesquisa não envia registros acima da nova contagem de repetição.
Ao editar uma resposta da pesquisa existente, a contagem de repetição para uma repeat being reduzida exibe uma mensagem na parte superior da repetição, avisando que o valor de registro da repetição foi alterado. O usuário não pode enviar uma resposta editada com menos do que o número original de registros repetidos. Novos registros de repetição adicionais são aceitos apenas se allowAdds estiver definido como true na coluna bind::esri:parameters. Se allowAdds estiver definido para false, o usuário não poderá inserir mais que o número original de registros repetidos.
Agregar funções
Você pode usar funções agregadas para retornar valores derivados de respostas em repetições. Para fazer isto, 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 é suportado somente fora da repetição.
Anotação:
Quando utilizada na aplicação 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:
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)
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.