On this page
calculate
Calculate
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:
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_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:
- Realizar operaciones aritméticas
- Concatenar cadenas
- Aplicar lógica o funciones complejas
- 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
- El archivo CSV debe cargarse junto con su XLSForm al implementar la encuesta.
- Use comas como separadores en su archivo CSV, no punto y coma.
- Evite comas dentro de los campos de datos de su CSV, ya que pueden causar problemas de análisis.
- pulldata() solo admite relaciones 1 a 1. Si se encuentran múltiples coincidencias, devuelve solo la primera.
- Puede haber limitaciones en la longitud del texto que se puede obtener (alrededor de 76 caracteres).
- 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
- Use nombres significativos para los campos de cálculo para mejorar la legibilidad del formulario.
- Evite cálculos demasiado complejos en un solo campo; desgloselos si es necesario.
- Pruebe exhaustivamente sus cálculos, especialmente cuando use fórmulas complejas o datos externos.
- 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.
- 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?