On this page
calculate
Calcular
As perguntas de cálculo em XLSForms e rtSurvey são usadas para realizar cálculos com base em outros campos ou valores no seu formulário. Essas perguntas não são exibidas ao usuário, mas são executadas em segundo plano, armazenando seus resultados para uso posterior ou envio.
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 perguntas de cálculo não são exibidas aos usuários.
- calculation: A fórmula a ser avaliada.
Usos
As perguntas de cálculo são comumente usadas para:
- Realizar operações aritméticas
- Concatenar strings
- Aplicar lógica complexa ou funções
- Armazenar resultados intermediários para uso posterior
Exemplos
Aritmética básica
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
Concatenação de strings
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
Usando funções
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
Uso avançado no rtSurvey
Função pulldata()
O rtSurvey suporta a função pulldata() em campos de cálculo, permitindo que você recupere dados de arquivos 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 arquivo CSV (sem a extensão .csv)
- ‘column_to_return’: Nome da coluna contendo os dados que você quer obter
- ‘key_column’: Nome da coluna para comparar
- ${matching_value}: Valor a pesquisar na coluna de chave (geralmente uma variável do formulário)
Notas importantes
- O arquivo CSV deve ser enviado junto com o seu XLSForm ao implantar a pesquisa.
- Use vírgulas como separadores no seu arquivo CSV, não ponto e vírgula.
- Evite vírgulas nos campos de dados do seu CSV, pois elas podem causar problemas de análise.
- pulldata() suporta apenas relacionamentos de 1 para 1. Se múltiplas correspondências forem encontradas, retorna apenas a primeira.
- Pode haver limitações no comprimento de texto que pode ser obtido (cerca de 76 caracteres).
- Você pode usar pulldata() em restrições para validar entradas com relação aos dados CSV.
Cálculos condicionais
Você pode usar instruções if() para cálculos condicionais:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
Práticas recomendadas
- Use nomes significativos para campos de cálculo para melhorar a legibilidade do formulário.
- Evite cálculos excessivamente complexos em um único campo; divida-os se necessário.
- Teste seus cálculos minuciosamente, especialmente ao usar fórmulas complexas ou dados externos.
- Lembre-se de que os campos de cálculo são executados cada vez que o formulário é avaliado, o que pode impactar o desempenho para cálculos muito complexos ou numerosos.
- Ao usar pulldata(), garanta que seus arquivos CSV estejam formatados corretamente e teste minuciosamente com seus dados e estrutura de formulário específicos.
Limitações
- Os campos de cálculo não são diretamente editáveis pelos usuários.
- O resultado de um campo de cálculo não é imediatamente visível, a menos que seja referenciado em um campo de exibição ou usado na lógica do formulário.
Esta página foi útil?