select_one_from_file y select_multiple_from_file funcionan como select_one y select_multiple, pero en lugar de definir las opciones en la hoja de trabajo choices, las opciones se cargan desde un archivo CSV o XML externo adjunto al formulario. Esto es útil cuando su lista de opciones es muy larga, cambia con frecuencia o necesita actualizarse sin reconstruir todo el formulario.

Especificación básica de XLSForm

typenamelabel
select_one_from_file health_facilities.csvfacilitySeleccione el establecimiento de salud
select_multiple_from_file crops.csvcrops¿Qué cultivos produce el hogar?

El nombre del archivo después del nombre del tipo debe coincidir con el nombre del archivo que adjunta al cargar el formulario.

Formato del archivo CSV

Su archivo CSV debe tener al menos dos columnas: name (el valor almacenado) y label (el texto mostrado). Puede agregar cualquier número de columnas adicionales para filtrado.

health_facilities.csv:

  name,label,district,type
HF001,Nairobi Central Clinic,Nairobi,clinic
HF002,Westlands Health Centre,Nairobi,health_centre
HF003,Kisumu District Hospital,Kisumu,hospital
  

Filtrado de opciones

Use la columna choice_filter para mostrar solo las opciones que coincidan con el contexto actual. Referencie las columnas del CSV directamente con su nombre de columna (sin ${}):

typenamelabelchoice_filter
select_one districts.csvdistrictSeleccionar distrito
select_one_from_file health_facilities.csvfacilitySeleccionar establecimientodistrict = ${district}

En este ejemplo, solo se muestran los establecimientos en el distrito seleccionado. El district en choice_filter hace referencia a la columna district en el archivo CSV; ${district} hace referencia al campo del formulario llamado district.

Usos

Las preguntas de selección desde archivo se usan comúnmente para:

  1. Listas de opciones largas — establecimientos de salud, escuelas, pueblos, listas de especies (cientos o miles de elementos)
  2. Listas actualizadas frecuentemente — cuando la lista maestra cambia entre rondas de encuestas, actualice solo el CSV sin reconstruir el formulario
  3. Datos de referencia compartidos — un archivo CSV usado en múltiples formularios
  4. Selecciones en cascada filtradas — cargar todas las regiones/distritos/pueblos en un archivo, luego filtrar por la selección padre

Adjuntar el archivo

Cuando cargue su formulario a rtSurvey, adjunte el archivo CSV como un archivo adjunto multimedia. El nombre del archivo en la definición del formulario debe coincidir exactamente con el nombre del archivo adjunto.

Uso de choice-label() con from-file

Para mostrar la etiqueta de una opción seleccionada en una nota o campo de cálculo:

typenamelabelcalculation
select_one_from_file health_facilities.csvfacilitySeleccionar establecimiento
calculatefacility_labelchoice-label(${facility}, ${facility})
notesummaryEstablecimiento seleccionado: ${facility_label}

Mejores prácticas

  1. Mantenga sus archivos CSV con menos de 5,000 filas para buen rendimiento en dispositivos móviles.
  2. Incluya siempre una columna name y label; las columnas adicionales son opcionales.
  3. Para selecciones en cascada, use un solo CSV con una columna padre y filtre con choice_filter.
  4. Versione los nombres de sus archivos CSV (p. ej., facilities_v3.csv) al hacer cambios importantes en la estructura de columnas.
  5. Pruebe cuidadosamente las expresiones de filtrado; un error tipográfico en choice_filter mostrará silenciosamente sin opciones.

Limitaciones

  • Los archivos CSV muy grandes (10,000+ filas) pueden ralentizar la carga del formulario, especialmente en dispositivos de gama baja.
  • Los archivos CSV deben cargarse junto con el formulario; no se pueden obtener desde una URL en tiempo de ejecución (use search() o pulldata() para búsquedas dinámicas).
  • select_multiple_from_file es menos comúnmente compatible entre clientes; verifique la compatibilidad antes de usarlo.
select_one_from_fileApariencia search()
Fuente de opcionesArchivo CSV/XML adjuntoConsulta de base de datos del servidor
Funciona sin conexiónSí (archivo incluido)Requiere conectividad
Conteo de opcionesLimitado por memoria del dispositivoIlimitado (paginado)
Datos en tiempo realNo

Para conjuntos de datos grandes, que cambian frecuentemente o del lado del servidor, consulte Búsqueda dinámica.

¿Fue útil esta página?