On this page
calculate
Calculate (Calculer)
Les questions de type calculate dans XLSForms et rtSurvey sont utilisées pour effectuer des calculs basés sur d’autres champs ou valeurs de votre formulaire. Ces questions ne s’affichent pas à l’utilisateur mais s’exécutent en arrière-plan, stockant leurs résultats pour une utilisation ultérieure ou pour la soumission.
Syntaxe
Dans le XLSForm, une question calculate est définie comme suit :
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_q1 | ${q1} + ${q2} |
- type : Toujours
calculatepour ce type de question. - name : Un nom unique pour la question
calculate. - label : Généralement laissé vide car les questions
calculatene sont pas affichées aux utilisateurs. - calculation : La formule à évaluer.
Utilisations
Les questions calculate sont couramment utilisées pour :
- Effectuer des opérations arithmétiques
- Concaténer des chaînes de caractères
- Appliquer une logique ou des fonctions complexes
- Stocker des résultats intermédiaires pour une utilisation ultérieure
Exemples
Arithmétique de Base
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
Concaténation de Chaînes
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
Utilisation de Fonctions
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
Utilisation Avancée dans rtSurvey
Fonction pulldata()
rtSurvey prend en charge la fonction pulldata() dans les champs calculate, vous permettant de récupérer des données à partir de fichiers CSV externes :
| type | name | calculation |
|-----------|----------|-------------|
| calculate | city | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
Syntaxe
La syntaxe de base pour pulldata() est :
pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
- ‘csv_filename’ : Nom du fichier CSV (sans l’extension .csv)
- ‘column_to_return’ : Nom de la colonne contenant la donnée que vous souhaitez extraire
- ‘key_column’ : Nom de la colonne pour la correspondance
- ${matching_value} : Valeur à rechercher dans la colonne clé (souvent une variable du formulaire)
Notes Importantes
- Le fichier CSV doit être téléchargé avec votre XLSForm lors du déploiement de l’enquête.
- Utilisez des virgules comme séparateurs dans votre fichier CSV, et non des points-virgules.
- Évitez les virgules à l’intérieur des champs de données de votre CSV, car elles peuvent causer des problèmes d’analyse.
pulldata()ne prend en charge que les relations 1-à-1. Si plusieurs correspondances sont trouvées, il ne renvoie que la première.- Il peut y avoir des limitations sur la longueur du texte pouvant être extrait (environ 76 caractères).
- Vous pouvez utiliser
pulldata()dans les contraintes pour valider les entrées par rapport aux données du CSV.
Calculs Conditionnels
Vous pouvez utiliser des instructions if() pour les calculs conditionnels :
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
Meilleures Pratiques
- Utilisez des noms significatifs pour les champs
calculateafin d’améliorer la lisibilité du formulaire. - Évitez les calculs trop complexes dans un seul champ ; décomposez-les si nécessaire.
- Testez minutieusement vos calculs, en particulier lors de l’utilisation de formules complexes ou de données externes.
- N’oubliez pas que les champs
calculates’exécutent chaque fois que le formulaire est évalué, ce qui peut avoir un impact sur les performances pour des calculs très complexes ou nombreux. - Lors de l’utilisation de
pulldata(), assurez-vous que vos fichiers CSV sont correctement formatés et testez-les soigneusement avec vos données et votre structure de formulaire spécifiques.
Limitations
- Les champs
calculatene sont pas directement modifiables par les utilisateurs. - Le résultat d’un champ
calculaten’est pas immédiatement visible à moins d’être référencé dans un champ d’affichage ou utilisé dans la logique du formulaire.
Cette page vous a-t-elle été utile ?