Les formules peuvent être évaluées dans le contexte d'un enregistrement de formulaire. Cela contient :
- Formules de champ calculé
- Formules de préfixe de numéro de série
- Règles de pertinence
- Règles de validation
- Verrous d'enregistrement
- 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, des enregistrements et sous-enregistrements associés, et des métadonnées liées à l'enregistrement.
Puisque la formule est calculée enregistrement par enregistrement, ce contexte n'est pas l'endroit où vous souhaitez calculer 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'ID 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 « Number of students » et le code NUM_STUDENTS
, vous pourriez alors 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'ID 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é en utilisant des crochets. Par exemple, si le champ ci-dessus avait l'étiquette « Number of students », vous devriez alors vous y référer comme [Number of students]
dans la formule.
Notez que les étiquettes de champ ne sont pas obligatoirement uniques au sein d'un formulaire. Il est courant d'avoir plusieurs champs avec l'étiquette « Other », par exemple. Si vous vous référez à un champ par son étiquette et qu'il existe plus d'un champ 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 multiple ont un type de formule « struct » et liste de « struct » respectivement.
Si votre formulaire contient des champs de référence, vous pouvez inclure les valeurs des champs dans les 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
. Pendant la saisie de données ou l'importation, ActivityInfo présentera les champs clés de l'enregistrement associé à l'utilisateur pour l'aider à sélectionner le bon enregistrement :

Cependant, lorsque l'enregistrement est sauvegardé, ActivityInfo stocke en fait 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 référencer le 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, "North", "South"), " ",
IF(LOCATION.Longitude > 0, "East", "West"), " Hemisphere")
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 de sous-enregistrement dans le contexte de l'enregistrement, tant qu'ils sont 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 | texte | 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.