Les formules peuvent être évaluées dans le contexte d'un enregistrement de formulaire. Cela inclut :
- Les formules de champ calculé
- Les formules de préfixe de numéro de série
- Les règles de pertinence
- Les règles de validation
- Les verrouillages d'enregistrement
- Les autorisations au niveau de l'enregistrement
Dans chacun de ces cas, la formule est évaluée dans le contexte de chacun des enregistrements du formulaire. Dans ce contexte, vous pouvez vous référer aux valeurs des champs de l'enregistrement, aux enregistrements et sous-enregistrements associés, ainsi qu'aux métadonnées relatives à l'enregistrement.
Étant donné que la formule est calculée enregistrement par enregistrement, ce n'est pas dans ce contexte que vous calculerez des agrégats comme le pourcentage de participants qui sont des femmes. De telles statistiques peuvent être calculées à l'aide de tableaux croisés dynamiques.
Valeurs des champs
Dans un contexte d'enregistrement, vous pouvez vous référer aux champs en utilisant le code du champ, l'étiquette du champ, ou l'identifiant interne du champ et la syntaxe des symboles. Un symbole s'écrit dans les formules sans guillemets.

Par exemple, si vous avez un champ de texte avec l'étiquette "Nombre d'étudiants" et le code NUM_STUDENTS
, vous pourriez calculer le nombre d'enseignants requis, en supposant un ratio souhaité de 30:1, en utilisant l'une des formules suivantes :
Students / 30
NUM_STUDENTS / 30
csr4lu5lfl1n0swr / 30
Le texte csr4lu5lfl1n0swr
est l'identifiant interne du champ attribué par ActivityInfo, qui peut être trouvé via l'API.
Si l'étiquette d'un champ contient des espaces ou d'autres caractères spéciaux, le symbole doit être échappé à l'aide de crochets. Par exemple, si le champ ci-dessus avait l'étiquette "Nombre d'étudiants", vous devriez vous y référer en tant que [Nombre d'étudiants]
dans la formule.
Notez que les étiquettes de champ n'ont pas besoin d'être uniques au sein d'un formulaire. Il est courant d'avoir plusieurs champs avec l'étiquette "Autre", par exemple. Si vous vous référez à un champ par son étiquette et qu'il existe plusieurs champs avec cette étiquette, la valeur du premier champ sera utilisée.
Pour cette raison, nous recommandons d'attribuer des codes à tous les champs si vous prévoyez d'utiliser des formules.
Champs de texte
Les champs Texte, Texte multiligne, Numéro de série et Code-barres ont tous un type de formule texte dans le contexte de l'enregistrement.
Champs de sélection
Les champs de sélection unique et de sélection multiple ont respectivement un type de formule "struct" et liste de "struct".
Si votre formulaire inclut des champs de référence, vous pouvez inclure les valeurs des champs des enregistrements associés dans les formules.
Champs de référence
Lorsque vous ajoutez un champ de référence à un formulaire, ActivityInfo stocke l'ID d'enregistrement intégré de l'enregistrement sélectionné comme partie du champ.
Par exemple, disons que vous ajoutez une référence au formulaire District afghan dans la Géodatabase publique avec le code DISTRICT
. Lors de la saisie ou de l'importation de données, ActivityInfo présentera à l'utilisateur les champs clés de l'enregistrement associé pour l'aider à sélectionner le bon enregistrement :

Cependant, lorsque l'enregistrement est sauvegardé, ActivityInfo stocke en réalité l'ID de l'enregistrement associé. Cela garantit que même si le nom du district changeait, la relation entre les deux enregistrements est préservée.
Si vous référencez DISTRICT
dans une formule, le résultat sera l'ID de l'enregistrement, comme "z0000454985"
:

Champs associés
Dans la plupart des cas, l'ID de l'enregistrement associé ne sera pas très utile. À la place, vous pourriez vouloir faire référence au nom du district, ou à sa population. Pour cela, vous pouvez utiliser la notation par points pour rechercher la valeur associée :
DISTRICT.NAME
Si le formulaire associé a également des champs de référence, vous pouvez utiliser plusieurs points pour suivre le chemin. Dans ce cas, le formulaire District a un champ de référence PROVINCE
avec son propre champ NAME
. Pour trouver le nom de la Province associée, vous pourriez utiliser la formule :
DISTRICT.PROVINCE.NAME
Champs de point géographique
Les champs de point géographique ont un type de formule "struct". Cela signifie que chaque point géographique a deux valeurs : la latitude et la longitude. Vous pouvez vous référer à ces composants individuels en utilisant la syntaxe par points :
CONCAT(
IF(LOCATION.Latitude > 0, "Nord", "Sud"), " ",
IF(LOCATION.Longitude > 0, "Est", "Ouest"), " Hémisphère")
Champs de sous-formulaire
Bien que les champs de sous-formulaire n'aient pas de valeur en eux-mêmes, vous pouvez vous référer aux champs des sous-enregistrements dans le contexte de l'enregistrement, à condition qu'ils soient agrégés.
Par exemple, si vous avez un sous-formulaire HOUSEHOLDS_MEMBERS
avec les champs NAME
et AGE
, vous ne pouvez pas simplement vous référer à HOUSEHOLD_MEMBERS.NAME
, car il peut y avoir plus d'un nom. Vous pouvez cependant utiliser des fonctions d'agrégation comme COUNT
, SUM
, AVERAGE
, MIN
, et MAX
pour calculer une valeur unique à partir de tous les sous-enregistrements d'un enregistrement. Par exemple, vous pourriez trouver le nombre de membres en utilisant la formule :
COUNT(HOUSEHOLD_MEMBERS.NAME)
Et vous pourriez tester la présence d'un enfant de moins de cinq ans en utilisant la formule :
MIN(HOUSEHOULD_MEMBERS.AGE) < 5
Métadonnées de l'enregistrement
Dans le contexte de l'enregistrement, vous pouvez également vous référer aux métadonnées concernant l'enregistrement :
Symbole | Type | Description |
---|---|---|
_id | text | L'ID de l'enregistrement |
_lastEditTime | instant | La dernière fois que l'enregistrement a été mis à jour |
Notez que _lastEditTime
se réfère à la dernière fois qu'une mise à jour a atteint le serveur. Un enregistrement peut avoir été ajouté ou modifié hors ligne bien plus tôt.