Search the knowledge base, browse our resources, and visit our forum for more detailed information
Read in English | Leer en español | اقرأ باللغة العربية Dernière mise à jour : 15 oct. 2025
La liaison dynamique vous permet d’utiliser les données d’un projet parent dans des projets enfants, simplifiant ainsi la gestion de la collecte de données longitudinales. Cet article explique comment lier dynamiquement des données entre des projets KoboToolbox.
Remarque : Les pièces jointes de données dynamiques fonctionnent de manière similaire à la fonction pulldata(), mais éliminent le besoin de fichiers CSV séparés, puisque les données d'un projet parent lié servent de source de données.
Vous pouvez récupérer diverses réponses non médiatiques d’un projet parent et effectuer des calculs sur ces données liées dans un projet enfant. Cela peut être utile pour récupérer des données de référence, des informations de contact ou des dossiers médicaux dans des études de cohorte, ou pour confirmer ou vérifier des données précédemment collectées.
Nous recommandons d’utiliser XLSForm pour configurer les pièces jointes de données dynamiques. Pour des exemples de projets parents et enfants, téléchargez des fichiers d’exemple ici et ici.
La liaison dynamique de projets nécessite un projet parent et au moins un projet enfant. Le projet parent ne nécessite aucune modification par rapport à un XLSForm normal. Cependant, la configuration du ou des projets enfants implique les étapes suivantes :
Dans la feuille survey de votre XLSForm, ajoutez une ligne et définissez le type de question sur xml-external.
Dans la colonne name, fournissez un nom court pour le formulaire parent. Ce nom peut être composé de caractères de l’alphabet latin, de traits de soulignement et de chiffres.
Feuille survey
type |
name |
label |
|---|---|---|
xml-external |
parent |
|
survey |
Tout au long du formulaire, vous pouvez récupérer des valeurs du projet parent en créant une nouvelle question et en incluant l’expression appropriée dans la colonne calculation (voir le tableau ci-dessous). Vous pouvez utiliser les types de questions suivants pour récupérer des données :
Utilisez un type de question calculate pour récupérer et stocker des valeurs pour une utilisation future dans le formulaire ou l’ensemble de données (par exemple, pour des calculs ou des libellés de questions dynamiques).
Utilisez les types de questions text, integer, decimal, select_one ou select_multiple pour inclure les valeurs récupérées comme réponses par défaut dans des champs modifiables. Les données modifiées dans le projet enfant ne changeront pas les données d’origine dans le projet parent.
Feuille survey
type |
name |
label |
calculation |
|---|---|---|---|
xml-external |
parent |
||
text |
participant_id |
Quel est l’identifiant du participant ? |
|
integer |
age |
Confirmez l’âge du participant |
instance(“parent”)/root/data[enrollment_id = current()/../participant_id]/age |
survey |
Remarque :
Pour afficher des données liées sans permettre aux utilisatrices et utilisateurs de modifier le champ, utilisez une question calculate suivie d'une question note qui affiche la valeur calculée. Vous pouvez également utiliser des questions text, integer, decimal, select_one ou select_multiple avec la colonne read_only définie sur TRUE.
Dans la colonne calculation de la ligne où les données liées seront récupérées, incluez l’une des expressions du tableau ci-dessous. Ces expressions sont appelées XPaths.
Pour chaque expression du tableau ci-dessous :
parent est le nom unique attribué au formulaire parent (par exemple, dans la question xml-external du formulaire enfant).
parent_question fait référence au name d’une question du formulaire parent.
child_question fait référence au name d’une question du formulaire enfant.
parent_index_question est la question d’identification du formulaire parent qui le relie au formulaire enfant (par exemple, identifiant unique, nom de l’organisation).
child_index_question est la question d’identification du formulaire enfant qui le relie au formulaire parent (par exemple, identifiant unique, nom de l’organisation).
parent_group fait référence au name du groupe dans le formulaire parent dans lequel se trouve la parent_question.
parent_index_group fait référence au name du groupe dans le formulaire parent dans lequel se trouve la parent_index_question.
XPath |
Description |
|---|---|
|
Renvoie le nombre total de lignes dans le projet parent. |
|
Renvoie le nombre total de lignes dans le projet parent où |
|
Renvoie le nombre total d’instances où la valeur de |
|
Renvoie la valeur de |
|
Identique à ce qui précède, mais spécifie que seules les données de la première instance de |
|
Renvoie la somme des valeurs de |
|
Renvoie la valeur maximale saisie dans |
|
Renvoie la valeur minimale saisie dans |
Remarque : Si la question parent n'est incluse dans aucun groupe, omettez parent_group de l'expression.
Une fois vos XLSForms configurés, connectez-vous à votre compte KoboToolbox et suivez ces étapes :
Importez et déployez le projet parent, s’il n’est pas déjà déployé. Assurez-vous que le projet parent contient au moins une soumission.
Activez le partage de données pour le projet parent :
Dans l’onglet PARAMÈTRES > Connecter des projets du projet parent, activez le bouton Partage de données (désactivé par défaut) et cliquez sur RECONNAÎTRE ET CONTINUER dans la fenêtre de confirmation.
Toutes les données sont partagées par défaut, mais vous pouvez restreindre des variables spécifiques à partager avec les projets enfants en cliquant sur « Sélectionner des questions spécifiques à partager ».
Remarque : Si les projets ont des propriétaires différents, le propriétaire du projet parent doit partager le projet avec le propriétaire du projet enfant. Les autorisations minimales requises pour que les pièces jointes de données dynamiques fonctionnent sont Voir le formulaire et Voir les soumissions. Notez que cela permet aux administratrices et administrateurs du projet enfant de voir toutes les données du projet parent.
Importez et déployez le projet enfant.
Connectez le projet enfant au projet parent :
Dans l’onglet PARAMÈTRES > Connecter des projets du projet enfant, cliquez sur « Sélectionner un projet différent pour importer des données ». Un menu déroulant vous permettra de sélectionner un projet parent à lier.
Renommez le projet parent lié avec le nom de question xml-external défini dans le XLSForm et cliquez sur IMPORTER.
Vous pouvez ensuite sélectionner des questions spécifiques du projet parent à partager avec le projet enfant, ou sélectionner toutes les questions.
Si vous ajoutez de nouveaux champs au formulaire parent et souhaitez les utiliser dans le projet enfant, réimportez le projet parent dans les paramètres du projet enfant.
Remarque : Les formulaires ne peuvent être liés ensemble que s'ils se trouvent sur le même serveur KoboToolbox.
Il est possible qu’un projet parent et un projet enfant soient le même projet. Les étapes sont les mêmes que celles décrites ci-dessus. Voici des exemples de cas d’utilisation :
Suivi quotidien : Si un formulaire est utilisé pour interroger la même personne au fil du temps, vous pouvez le lier à lui-même pour compter les soumissions précédentes. Cela peut vous permettre d’afficher un message (par exemple, « le suivi est terminé ») après un certain nombre d’entrées ou d’informer l’enquêtrice ou l’enquêteur du nombre de formulaires soumis, comme illustré dans l’exemple ci-dessous.
Feuille survey
type |
name |
label |
calculation |
|---|---|---|---|
xml-external |
monitoring |
||
text |
participant_id |
Quel est l’identifiant du participant ? |
|
calculate |
count |
count(instance(“monitoring”)/root/ data[monitoring/participant_id = current()/../participant_id]) |
|
note |
monitoring_note |
Ce participant a été interrogé ${count} fois. |
|
survey |
Formulaire d’inscription : En liant un formulaire d’inscription à lui-même, vous pouvez vérifier si une utilisatrice ou un utilisateur a déjà été inscrit. Cela peut vous permettre de générer un message d’erreur ou d’ajouter une contrainte s’ils sont déjà inscrits, empêchant ainsi les inscriptions en double, comme illustré dans l’exemple ci-dessous.
Feuille survey
type |
name |
label |
calculation |
relevant |
|---|---|---|---|---|
xml-external |
registration |
|||
text |
customer_id |
Quel est le numéro d’identification du client ? |
||
calculate |
count |
count(instance(“registration”)/root/ data[registration/customer_id = current()/../customer_id]) |
||
note |
already_registered |
Ce client est déjà inscrit. Veuillez fermer ce formulaire. |
${count} > 0 |
|
survey |
Les données des projets liés dynamiquement peuvent être collectées à l’aide de l’application Android KoboCollect ou des formulaires web Enketo.
Lors de la collecte de données, notez ce qui suit :
Le projet parent doit avoir au moins une soumission pour que le projet enfant fonctionne correctement.
Lors de la collecte de données en ligne, il y a un délai de cinq minutes pour synchroniser les nouvelles données du projet parent avec le projet enfant.
En mode hors ligne, téléchargez fréquemment le projet enfant pour assurer la synchronisation des données avec le projet parent.
Remarque : Vous pouvez configurer l'application Android KoboCollect pour mettre à jour automatiquement les données du projet parent lorsqu'une connexion Internet est disponible. Allez dans Paramètres > Gestion des formulaires > Mode de mise à jour des formulaires vierges et sélectionnez soit Formulaires précédemment téléchargés uniquement, soit Correspondance exacte avec le serveur. Vous pouvez définir la fréquence de téléchargement automatique toutes les 15 minutes, toutes les heures, toutes les six heures ou toutes les 24 heures. Notez que l'activation de ce paramètre peut augmenter la consommation de la batterie.
[position()=1], comme ci-dessous :
instance('parent')/root/data[parent_index_group/parent_index_question = current()/../child_index_question][position()=1]/parent_group/parent_question
Did you find what you were looking for? Was the information clear? Was anything missing?
Share your feedback to help us improve this article!
KoboToolbox is maintained by Kobo Inc.