Structure du questionnaire

Projets hiérarchiques

Habituellement, toutes les données d'un projet sont conservées dans une seule base de données CallWeb. Parfois, cependant, une structure de données plus complexe est appropriée. Pensons par exemple à une étude sur l'emploi dans les familles. Une partie du questionnaire porterait sur le ménage; une autre viserait de l'information sur chaque membre du ménage. Bien sûr, il est possible de créer suffisamment de blocs de questions pour accomoder le plus grand ménage possible, mais cette approche pourrait ne pas être la plus efficiente sur le plan de la collecte de données. C'est plutôt un cas adapté à une structure hiérarchique.

Dans les projets hiérarchiques, un projet CallWeb maître agit comme base de données parent (dans notre exemple, ce projet viserait le ménage). Un ou plusieurs projets CallWeb « enfants » sont reliés au projet maître pour permettre autant de « relations » avec les enfants que nécessaire. Dans notre exemple, chaque membre du ménage constituerait un enfant du projet maître portant sur le ménage. Chaque relation enfant est un projet CallWeb différent; il peut y avoir autant de relations de ce type dans un projet et les projets enfants peuvent eux-mêmes avoir des projets enfants. Par exemple, un ménage pourrait comporter plusieurs membres et chaque membre pourrait avoir plusieurs emplois.

Syntaxe

Les projets hiérarchiques sont définis par des questions de type RELATION.

  • Dans une question RELATION, les nombres minimum et maximum de réponses réfèrent au nombre de dossiers enfants. Établir les minimum et maximum à 1 et 3 assure que les participants ajoutent au moins 1 et au plus 3 enfants. Les valeurs par défaut sont 0 et 9999 respectivement.
  • Le nombre de dossiers enfants est enregistré dans la question RELATION elle-même au moment de passer à la page suivante.
  • Une question RELATION ne comporte pas de texte. Donc, elle sera habituellement insérée dans une page comportant une autre question qui fournirait contexte et explications. Une question RELATION ne peut pas être sur la même page que d'autres questions recueillant des réponses; la raison de cette contrainte est que les liens d'ajout ou de modification des relations ouvrent un second questionnaire sans sauvegarder les données de la page courante du questionnaire parent.
  • Le segment de texte de la question RELATION est utilisé pour fournir les paramètres de la relation, en utilisant la syntaxe suivante (notez que les virgules et les obliques sont significatifs!) :
Paramètre Exemple de valeur Explication
child_project=children,nom du projet CallWeb enfant
parent_telkey_varname_in_child_project=parent_telkey,nom de la variable dans le projet enfant qui contiendra le code _telkey du parent qui lui est associé
display_from_child_project=Q1/Q2/AQ3,une liste séparée par des obliques des valeurs de l'enfant qui sont affichées dans le tableau synthèse dans le projet parent. Chaque nom de question peut être précédé d'une condition d'affichage entre crochets. Si la condition d'affichage requiert une virgule, insérez-la comme &#virgule; (avec le point-virgule à la fin); si elle requiert un oblique, insérez-le comme &#oblique; (avec le point-virgule à la fin).
copy_into_children=Q11/Q12/AQ13,(optionnel) une liste séparée par des obliques des valeurs à copier depuis le parent dans l'enfant (elles doivent exister dans les deux projets et être attribuables dans l'enfant [voir # QUESTIONS ATTRIBUABLES])
child_subset_in_sql=Q1=1,(optionnel) une expression MySQL valide (sans le mot-clef « WHERE »); s'il est présent, ce paramètre détermine la liste des dossiers enfants affichés par la question RELATION; il a préséance sur la sélection des dossiers contenant la valeur « parent_telkey_varname_in_child_project ». Cette expression ne peut pas contenir des virgules puisque la virgule sert de séparateur.
erase_question=QCONFIRM,(optionnel) nom de la question du questionnaire parent qui est utilisée pour demander de confirmer une demande d'effacement d'un dossier enfant. En l'absence de ce paramètre, les effacements sont faits sans confirmation. La question « erase_question » doit posséder un type ERASEREL. Elle n'est pas affichée dans le cheminement normal à travers le questionnaire et elle reçoit automatiquement le type BACKWALL.
erase_code=1,(optionnel) code numérique de la question « erase_question » qui indique que la demande d'effacement a été confirmée; il est obligatoire si « erase_question » est définie. Par exemple, si la question de confirmation est « Voulez-vous vraiment effacer ce dossier? » et que le code 1 est « Oui », alors on utilisera « erase_code=1 » dans la question RELATION.
erase_calcul=QCALCUL,(optionnel) nom d'une question CALCUL du questionnaire parent qui est exécutée lorsqu'un dossier enfant est effacé alors que « erase_question » égale « erase_code ».
read_also=Q99,(optionnel) une liste séparée par des obliques des valeurs de l'enfant à lire en plus pour assurer toutes les substitutions requises pour l'affichage.
order_by=Q99,(optionnel) une liste séparée par des obliques de valeurs à utiliser pour trier les lignes du tableau des enfants.
crypt=oui,(optionnel) oui ou non, les liens vers les enfants sont-ils chiffrés.
add_button=oui,(optionnel) oui ou non, le bouton Ajouter est-il affiché au-dessus du tableau d'enfants?

Informations utiles

  • Utilisez une partie ouverte (e.g., APARENTCODE) pour enregistrer les nombreux caractères de parent_telkey_varname_in_child_project.
  • Les variables copiées du parent vers l'enfant (parent_telkey_varname_in_child_project et copy_into_children) devrait probablement être des questions de type STOCK pour qu'elles en soient pas affichées dans l'enfant.
  • Dans le projet enfant, les variables copiées du parent doivent faire partie d'une instruction # Questions attribuables pour que le projet enfant accepte leurs valeurs.
  • Il existe des valeurs par défaut pour le texte affiché sur les boutons d'ajout, de modification et de destruction des dossiers enfants et pour le bouton de rafraîchissement de la page. Ces textes peuvent être modifiés par des instructions dièses préfixées des mots # Text relation.
  • Pour des raisons techniques, le bouton de rafraîchissement des questions relations n'est pas compatible avec le mode démonstration. Le même résultat peut être obtenu en mode démonstration en reculant à une question précédant la question RELATION et en avançant à nouveau.
  • Le rappel d'une question RELATION comme &@QUESTION insère le nombre d'enfants à l'endroit du rappel. Pour une question RELATION, rappeler &QUESTION insère le tableau complet des enfants à l'endroit du rappel.
  • Le projet enfant doit inclure une instruction « # URL » pointant vers le questionnaire parent. Cet URL dervait utiliser une syntaxe comme celle-ci :
    # URL = callweb.cgi?_proj=PARENT_NAME&_lang=EN&_telkey={$APARENT_TELKEY}&_debute=RELATION_QUESTION
    où PARENT_NAME est le nom du projet parent, APARENT_TELKEY est le nom de la question contenant le _telkey parent dans le projet enfant (parent_telkey_varname_in_child_project, ci-haut) et RELATION_QUESTION est le nom de la question RELATION dans le projet parent.

Interface usager pour le participant

En atteignant une question RELATION, le participant voit un bouton « Ajouter » et un bouton « Mettre à jour ». En réponse à un clic sur le bouton « Ajouter », le système ouvre un questionnaire enfant; à la fin du questionnaire enfant, le système réaffiche le questionnaire parent avec un tableau décrivant l'enfant ou les enfants. Dans ce tableau, un lien permet au participant de modifier un dossier enfant ou de l'effacer. Ce tableau affiche aussi de l'information sur chacun des enfants en utilisant le texte des questions et des réponses que l'on trouve dans le projet enfant. Un autre texte peut être affiché pour les questions et les catégories de réponse en plaçant ce texte alternatif dans les segments appropriés du questionnaire enfant entre des bornes <parent></parent>. Par exemple,

*1*Ceci est le texte de la catégorie 1 <parent>Catégorie 1</parent>

afficherait « Ceci est le texte de la catégorie 1 » dans le questionnaire enfant mais afficherait « Catégorie 1 » dans le rableau récapitulatif dans le parent.

Extraire de l'information des dossiers enfants

Les données enfants sont enregistrées dans un projet CallWeb séparé du projet parent. Néanmoins, il est possible d'extraire de l'information du projet enfant et d'utiliser cette information dans le questionnaire parent.

La fonction apropos_relations peut être utilisée dans des questions CALCUL pour faire des extractions. La syntaxe générale de cette fonction est comme suit :

    DESTINATION = apropos_relations("QUESTION_RELATION","TYPE_DE_DONNEES","PARAMETRES_OPTIONNELS")

Le tableau suivant détaille les types de données disponibles et les paramètres qui leur sont associés.

Type de donnéesParamètreExemple
N(aucun)apropos_relations("REL","N")
TOTAL ou SUMvariable enfant à totaliserapropos_relations("REL","TOTAL","AQ1")
MINvariable enfant dont on veut le minimumapropos_relations("REL","MIN","AQ1")
MAXvariable enfant dont on veut le maximumapropos_relations("REL","MAX","AQ1")
AVGvariable enfant dont on veut la moyenneapropos_relations("REL","AVG","AQ1")
STDvariable enfant dont on veut l'écart-typeapropos_relations("REL","STD","AQ1")

Structure du questionnaire

Projets hiérarchiques

Habituellement, toutes les données d'un projet sont conservées dans une seule base de données CallWeb. Parfois, cependant, une structure de données plus complexe est appropriée. Pensons par exemple à une étude sur l'emploi dans les familles. Une partie du questionnaire porterait sur le ménage; une autre viserait de l'information sur chaque membre du ménage. Bien sûr, il est possible de créer suffisamment de blocs de questions pour accomoder le plus grand ménage possible, mais cette approche pourrait ne pas être la plus efficiente sur le plan de la collecte de données. C'est plutôt un cas adapté à une structure hiérarchique.

Dans les projets hiérarchiques, un projet CallWeb maître agit comme base de données parent (dans notre exemple, ce projet viserait le ménage). Un ou plusieurs projets CallWeb « enfants » sont reliés au projet maître pour permettre autant de « relations » avec les enfants que nécessaire. Dans notre exemple, chaque membre du ménage constituerait un enfant du projet maître portant sur le ménage. Chaque relation enfant est un projet CallWeb différent; il peut y avoir autant de relations de ce type dans un projet et les projets enfants peuvent eux-mêmes avoir des projets enfants. Par exemple, un ménage pourrait comporter plusieurs membres et chaque membre pourrait avoir plusieurs emplois.

Syntaxe

Les projets hiérarchiques sont définis par des questions de type RELATION.

  • Dans une question RELATION, les nombres minimum et maximum de réponses réfèrent au nombre de dossiers enfants. Établir les minimum et maximum à 1 et 3 assure que les participants ajoutent au moins 1 et au plus 3 enfants. Les valeurs par défaut sont 0 et 9999 respectivement.
  • Le nombre de dossiers enfants est enregistré dans la question RELATION elle-même au moment de passer à la page suivante.
  • Une question RELATION ne comporte pas de texte. Donc, elle sera habituellement insérée dans une page comportant une autre question qui fournirait contexte et explications. Une question RELATION ne peut pas être sur la même page que d'autres questions recueillant des réponses; la raison de cette contrainte est que les liens d'ajout ou de modification des relations ouvrent un second questionnaire sans sauvegarder les données de la page courante du questionnaire parent.
  • Le segment de texte de la question RELATION est utilisé pour fournir les paramètres de la relation, en utilisant la syntaxe suivante (notez que les virgules et les obliques sont significatifs!) :
Paramètre Exemple de valeur Explication
child_project=children,nom du projet CallWeb enfant
parent_telkey_varname_in_child_project=parent_telkey,nom de la variable dans le projet enfant qui contiendra le code _telkey du parent qui lui est associé
display_from_child_project=Q1/Q2/AQ3,une liste séparée par des obliques des valeurs de l'enfant qui sont affichées dans le tableau synthèse dans le projet parent. Chaque nom de question peut être précédé d'une condition d'affichage entre crochets. Si la condition d'affichage requiert une virgule, insérez-la comme &#virgule; (avec le point-virgule à la fin); si elle requiert un oblique, insérez-le comme &#oblique; (avec le point-virgule à la fin).
copy_into_children=Q11/Q12/AQ13,(optionnel) une liste séparée par des obliques des valeurs à copier depuis le parent dans l'enfant (elles doivent exister dans les deux projets et être attribuables dans l'enfant [voir # QUESTIONS ATTRIBUABLES])
child_subset_in_sql=Q1=1,(optionnel) une expression MySQL valide (sans le mot-clef « WHERE »); s'il est présent, ce paramètre détermine la liste des dossiers enfants affichés par la question RELATION; il a préséance sur la sélection des dossiers contenant la valeur « parent_telkey_varname_in_child_project ». Cette expression ne peut pas contenir des virgules puisque la virgule sert de séparateur.
erase_question=QCONFIRM,(optionnel) nom de la question du questionnaire parent qui est utilisée pour demander de confirmer une demande d'effacement d'un dossier enfant. En l'absence de ce paramètre, les effacements sont faits sans confirmation. La question « erase_question » doit posséder un type ERASEREL. Elle n'est pas affichée dans le cheminement normal à travers le questionnaire et elle reçoit automatiquement le type BACKWALL.
erase_code=1,(optionnel) code numérique de la question « erase_question » qui indique que la demande d'effacement a été confirmée; il est obligatoire si « erase_question » est définie. Par exemple, si la question de confirmation est « Voulez-vous vraiment effacer ce dossier? » et que le code 1 est « Oui », alors on utilisera « erase_code=1 » dans la question RELATION.
erase_calcul=QCALCUL,(optionnel) nom d'une question CALCUL du questionnaire parent qui est exécutée lorsqu'un dossier enfant est effacé alors que « erase_question » égale « erase_code ».
read_also=Q99,(optionnel) une liste séparée par des obliques des valeurs de l'enfant à lire en plus pour assurer toutes les substitutions requises pour l'affichage.
order_by=Q99,(optionnel) une liste séparée par des obliques de valeurs à utiliser pour trier les lignes du tableau des enfants.
crypt=oui,(optionnel) oui ou non, les liens vers les enfants sont-ils chiffrés.
add_button=oui,(optionnel) oui ou non, le bouton Ajouter est-il affiché au-dessus du tableau d'enfants?

Informations utiles

  • Utilisez une partie ouverte (e.g., APARENTCODE) pour enregistrer les nombreux caractères de parent_telkey_varname_in_child_project.
  • Les variables copiées du parent vers l'enfant (parent_telkey_varname_in_child_project et copy_into_children) devrait probablement être des questions de type STOCK pour qu'elles en soient pas affichées dans l'enfant.
  • Dans le projet enfant, les variables copiées du parent doivent faire partie d'une instruction # Questions attribuables pour que le projet enfant accepte leurs valeurs.
  • Il existe des valeurs par défaut pour le texte affiché sur les boutons d'ajout, de modification et de destruction des dossiers enfants et pour le bouton de rafraîchissement de la page. Ces textes peuvent être modifiés par des instructions dièses préfixées des mots # Text relation.
  • Pour des raisons techniques, le bouton de rafraîchissement des questions relations n'est pas compatible avec le mode démonstration. Le même résultat peut être obtenu en mode démonstration en reculant à une question précédant la question RELATION et en avançant à nouveau.
  • Le rappel d'une question RELATION comme &@QUESTION insère le nombre d'enfants à l'endroit du rappel. Pour une question RELATION, rappeler &QUESTION insère le tableau complet des enfants à l'endroit du rappel.
  • Le projet enfant doit inclure une instruction « # URL » pointant vers le questionnaire parent. Cet URL dervait utiliser une syntaxe comme celle-ci :
    # URL = callweb.cgi?_proj=PARENT_NAME&_lang=EN&_telkey={$APARENT_TELKEY}&_debute=RELATION_QUESTION
    où PARENT_NAME est le nom du projet parent, APARENT_TELKEY est le nom de la question contenant le _telkey parent dans le projet enfant (parent_telkey_varname_in_child_project, ci-haut) et RELATION_QUESTION est le nom de la question RELATION dans le projet parent.

Interface usager pour le participant

En atteignant une question RELATION, le participant voit un bouton « Ajouter » et un bouton « Mettre à jour ». En réponse à un clic sur le bouton « Ajouter », le système ouvre un questionnaire enfant; à la fin du questionnaire enfant, le système réaffiche le questionnaire parent avec un tableau décrivant l'enfant ou les enfants. Dans ce tableau, un lien permet au participant de modifier un dossier enfant ou de l'effacer. Ce tableau affiche aussi de l'information sur chacun des enfants en utilisant le texte des questions et des réponses que l'on trouve dans le projet enfant. Un autre texte peut être affiché pour les questions et les catégories de réponse en plaçant ce texte alternatif dans les segments appropriés du questionnaire enfant entre des bornes <parent></parent>. Par exemple,

*1*Ceci est le texte de la catégorie 1 <parent>Catégorie 1</parent>

afficherait « Ceci est le texte de la catégorie 1 » dans le questionnaire enfant mais afficherait « Catégorie 1 » dans le rableau récapitulatif dans le parent.

Extraire de l'information des dossiers enfants

Les données enfants sont enregistrées dans un projet CallWeb séparé du projet parent. Néanmoins, il est possible d'extraire de l'information du projet enfant et d'utiliser cette information dans le questionnaire parent.

La fonction apropos_relations peut être utilisée dans des questions CALCUL pour faire des extractions. La syntaxe générale de cette fonction est comme suit :

    DESTINATION = apropos_relations("QUESTION_RELATION","TYPE_DE_DONNEES","PARAMETRES_OPTIONNELS")

Le tableau suivant détaille les types de données disponibles et les paramètres qui leur sont associés.

Type de donnéesParamètreExemple
N(aucun)apropos_relations("REL","N")
TOTAL ou SUMvariable enfant à totaliserapropos_relations("REL","TOTAL","AQ1")
MINvariable enfant dont on veut le minimumapropos_relations("REL","MIN","AQ1")
MAXvariable enfant dont on veut le maximumapropos_relations("REL","MAX","AQ1")
AVGvariable enfant dont on veut la moyenneapropos_relations("REL","AVG","AQ1")
STDvariable enfant dont on veut l'écart-typeapropos_relations("REL","STD","AQ1")