Las preguntas de cálculo en XLSForms y rtSurvey se usan para realizar cómputos basados en otros campos o valores de su formulario. Estas preguntas no se muestran al usuario, sino que se ejecutan en segundo plano, almacenando sus resultados para uso posterior o envío.

Sintaxis

En el XLSForm, una pregunta de cálculo se define de la siguiente manera:

typenamelabelcalculation
calculatecalc_q1${q1} + ${q2}
  • type: Siempre “calculate” para este tipo de pregunta.
  • name: Un nombre único para la pregunta de cálculo.
  • label: Generalmente se deja en blanco ya que las preguntas de cálculo no se muestran a los usuarios.
  • calculation: La fórmula a evaluar.

Usos

Las preguntas de cálculo se usan comúnmente para:

  1. Realizar operaciones aritméticas
  2. Concatenar cadenas
  3. Aplicar lógica o funciones complejas
  4. Almacenar resultados intermedios para uso posterior

Ejemplos

Aritmética básica

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | total    | ${price} * ${quantity} |
  

Concatenación de cadenas

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
  

Uso de funciones

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | age      | int((today() - ${date_of_birth}) / 365.25) |
  

Uso avanzado en rtSurvey

Función pulldata()

rtSurvey admite la función pulldata() en campos de cálculo, lo que le permite recuperar datos de archivos CSV externos:

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | city     | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
  

Sintaxis

La sintaxis básica para pulldata() es:

  pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
  
  • 'csv_filename': Nombre del archivo CSV (sin extensión .csv)
  • 'column_to_return': Nombre de columna que contiene los datos que desea obtener
  • 'key_column': Nombre de columna con el que comparar
  • ${matching_value}: Valor a buscar en la columna clave (a menudo una variable del formulario)

Notas importantes

  1. El archivo CSV debe cargarse junto con su XLSForm al implementar la encuesta.
  2. Use comas como separadores en su archivo CSV, no punto y coma.
  3. Evite comas dentro de los campos de datos de su CSV, ya que pueden causar problemas de análisis.
  4. pulldata() solo admite relaciones 1 a 1. Si se encuentran múltiples coincidencias, devuelve solo la primera.
  5. Puede haber limitaciones en la longitud del texto que se puede obtener (alrededor de 76 caracteres).
  6. Puede usar pulldata() en restricciones para validar entradas contra los datos del CSV.

Cálculos condicionales

Puede usar sentencias if() para cálculos condicionales:

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
  

Mejores prácticas

  1. Use nombres significativos para los campos de cálculo para mejorar la legibilidad del formulario.
  2. Evite cálculos demasiado complejos en un solo campo; desgloselos si es necesario.
  3. Pruebe exhaustivamente sus cálculos, especialmente cuando use fórmulas complejas o datos externos.
  4. Recuerde que los campos de cálculo se ejecutan cada vez que se evalúa el formulario, lo que puede afectar el rendimiento para cálculos muy complejos o numerosos.
  5. Al usar pulldata(), asegúrese de que sus archivos CSV estén correctamente formateados y pruebe exhaustivamente con sus datos y estructura de formulario específicos.

Limitaciones

  • Los campos de cálculo no son editables directamente por los usuarios.
  • El resultado de un campo de cálculo no es inmediatamente visible a menos que se referencie en un campo de visualización o se use en la lógica del formulario.
¿Fue útil esta página?