select_one_from_file e select_multiple_from_file funcionam como select_one e select_multiple, mas em vez de definir escolhas na folha de trabalho choices, as escolhas são carregadas de um ficheiro CSV ou XML externo anexado ao formulário. Isto é útil quando a sua lista de escolhas é muito longa, muda frequentemente ou precisa de ser atualizada sem reconstruir o formulário inteiro.

Especificação XLSForm Básica

typenamelabel
select_one_from_file health_facilities.csvfacilitySelecione a unidade de saúde
select_multiple_from_file crops.csvcropsQue culturas o agregado familiar cultiva?

O nome do ficheiro após o nome do tipo deve corresponder ao nome do ficheiro que anexa ao carregar o formulário.

Formato do ficheiro CSV

O seu ficheiro CSV deve ter pelo menos duas colunas: name (o valor armazenado) e label (o texto exibido). Pode adicionar qualquer número de colunas extra para filtragem.

health_facilities.csv:

  name,label,district,type
HF001,Clínica Central de Nairobi,Nairobi,clinic
HF002,Centro de Saúde de Westlands,Nairobi,health_centre
HF003,Hospital Distrital de Kisumu,Kisumu,hospital
  

Filtrar escolhas

Use a coluna choice_filter para mostrar apenas as escolhas que correspondem ao contexto atual. Referencie as colunas do CSV diretamente com o nome da coluna (sem ${}):

typenamelabelchoice_filter
select_one districts.csvdistrictSelecione o distrito
select_one_from_file health_facilities.csvfacilitySelecione a unidadedistrict = ${district}

Neste exemplo, apenas as unidades no distrito selecionado são mostradas. O district em choice_filter refere-se à coluna district no ficheiro CSV; ${district} refere-se ao campo do formulário chamado district.

Utilizações

As perguntas de seleção a partir de ficheiro são comummente usadas para:

  1. Listas de escolha longas — unidades de saúde, escolas, aldeias, listas de espécies (centenas ou milhares de itens)
  2. Listas frequentemente atualizadas — quando a lista mestre muda entre rondas de inquérito, atualize apenas o CSV sem reconstruir o formulário
  3. Dados de referência partilhados — um ficheiro CSV usado em múltiplos formulários
  4. Seleções em cascata filtradas — carregue todas as regiões/distritos/aldeias num ficheiro, depois filtre pela seleção pai

Anexar o ficheiro

Quando carregar o seu formulário para o rtSurvey, anexe o ficheiro CSV como um anexo de media. O nome do ficheiro na definição do formulário deve corresponder exatamente ao nome do ficheiro do anexo.

Usar choice-label() com from-file

Para exibir a etiqueta de uma escolha selecionada num campo de nota ou cálculo:

typenamelabelcalculation
select_one_from_file health_facilities.csvfacilitySelecione a unidade
calculatefacility_labelchoice-label(${facility}, ${facility})
notesummaryUnidade selecionada: ${facility_label}

Melhores Práticas

  1. Mantenha os seus ficheiros CSV abaixo de 5.000 linhas para bom desempenho em dispositivos móveis.
  2. Inclua sempre uma coluna name e label — colunas adicionais são opcionais.
  3. Para seleções em cascata, use um único CSV com uma coluna pai e filtre com choice_filter.
  4. Versione os nomes dos seus ficheiros CSV (por ex., facilities_v3.csv) quando fizer alterações significativas à estrutura de colunas.
  5. Teste as expressões de filtragem cuidadosamente — um erro de digitação em choice_filter não mostrará escolhas silenciosamente.

Limitações

  • Ficheiros CSV muito grandes (10.000+ linhas) podem abrandar o carregamento do formulário, especialmente em dispositivos de baixo desempenho.
  • Os ficheiros CSV devem ser carregados juntamente com o formulário — não podem ser obtidos de um URL em tempo de execução (use search() ou pulldata() para pesquisas dinâmicas).
  • select_multiple_from_file é menos comummente suportado entre clientes — verifique a compatibilidade antes de usar.
select_one_from_fileAparência search()
Fonte das escolhasFicheiro CSV/XML anexadoConsulta de base de dados do lado do servidor
Funciona offlineSim (ficheiro incluído)Requer conectividade
Contagem de escolhasLimitada pela memória do dispositivoIlimitada (paginada)
Dados em tempo realNãoSim

Para conjuntos de dados grandes, frequentemente alterados ou do lado do servidor, consulte Pesquisa dinâmica.

Esta página foi útil?