On this page
calculate
Calculate
As perguntas de cálculo em XLSForms e rtSurvey são usadas para executar computações com base noutros campos ou valores do seu formulário. Estas perguntas não são exibidas ao utilizador, mas executam em segundo plano, armazenando os seus resultados para uso posterior ou submissão.
Sintaxe
No XLSForm, uma pergunta de cálculo é definida da seguinte forma:
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_q1 | ${q1} + ${q2} |
- type: Sempre “calculate” para este tipo de pergunta.
- name: Um nome único para a pergunta de cálculo.
- label: Geralmente deixado em branco pois as perguntas de cálculo não são exibidas aos utilizadores.
- calculation: A fórmula a ser avaliada.
Utilizações
As perguntas de cálculo são comummente usadas para:
- Executar operações aritméticas
- Concatenar cadeias de caracteres
- Aplicar lógica complexa ou funções
- Armazenar resultados intermédios para uso posterior
Exemplos
Aritmética Básica
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
Concatenação de Cadeias de Caracteres
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
Usar Funções
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
Utilização Avançada no rtSurvey
Função pulldata()
O rtSurvey suporta a função pulldata() em campos de cálculo, permitindo recuperar dados de ficheiros CSV externos:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | city | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
Sintaxe
A sintaxe básica para pulldata() é:
pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
- ‘csv_filename’: Nome do ficheiro CSV (sem extensão .csv)
- ‘column_to_return’: Nome da coluna que contém os dados que quer obter
- ‘key_column’: Nome da coluna a comparar
- ${matching_value}: Valor a procurar na coluna chave (frequentemente uma variável do formulário)
Notas Importantes
- O ficheiro CSV deve ser carregado juntamente com o seu XLSForm ao implementar o inquérito.
- Use vírgulas como separadores no seu ficheiro CSV, não ponto e vírgula.
- Evite vírgulas dentro dos campos de dados do seu CSV, pois podem causar problemas de análise.
- pulldata() apenas suporta relações 1-para-1. Se forem encontradas múltiplas correspondências, devolve apenas a primeira.
- Pode haver limitações no comprimento de texto que pode ser obtido (cerca de 76 caracteres).
- Pode usar pulldata() em restrições para validar entradas contra os dados do CSV.
Cálculos Condicionais
Pode usar instruções if() para cálculos condicionais:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
Melhores Práticas
- Use nomes significativos para campos de cálculo para melhorar a legibilidade do formulário.
- Evite cálculos excessivamente complexos num único campo; divida-os se necessário.
- Teste os seus cálculos exaustivamente, especialmente quando usar fórmulas complexas ou dados externos.
- Lembre-se que os campos de cálculo são executados cada vez que o formulário é avaliado, o que pode afetar o desempenho para cálculos muito complexos ou numerosos.
- Ao usar pulldata(), certifique-se que os seus ficheiros CSV estão corretamente formatados e teste exaustivamente com os seus dados específicos e estrutura de formulário.
Limitações
- Os campos de cálculo não são diretamente editáveis pelos utilizadores.
- O resultado de um campo de cálculo não é imediatamente visível a menos que seja referenciado num campo de exibição ou usado na lógica do formulário.
Esta página foi útil?