J'ai une question type "choix multiple" avec bien entendu plusieurs sous questions possibles.
Cependant il y a des réponses qui ne sont pas cohérentes si elle sont coché ensemble.
J'aimerais pouvoir signaler à l'utilisateur qu'il fait une "c..."...
J'ai fais ça par exemple :
if((Q400101_SQ002.value="Y") AND (Q400101_SQ003.value="Y"),"y a une incohérence")
Que j'ai mis dans le truc "Logique" "equation de validation"...
Mais bien entendu ça fonctionne pas ...
J'ai toujours eu un peu de mal avec ces équations ...
if((Q400101_SQ002.value="Y") AND (Q400101_SQ003.value="Y"),"y a une incohérence")
1. "value" n'est pas nécessaire. Telle est la valeur des "évaluations"
2. Les comparaisons sont faites avec "==".
3. La fonction "if" a trois paramètres. if(test, résultat si vrai, résultat si faux)
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: DenisChenu, Philippe
Rhoooo ! Merci Merci !
Décidément moi et la logique ...
...
Malheureusement je pense que j'ai pas fini de venir miauler sur ce Forum
Merci encore et bonne après midi
Philippe
Alors, évidement ça fonctionne avec juste ça mais bien entendu Murphy n'est jamais très loin...
Lorsque j'ai voulu complexifier le bouzin je me suis heurté à deux problèmes :
pour rappel c'est une question qui comporte plusieurs case à cocher dont certaines ne doivent pas logiquement être cochées en même temps ...
Il y a la sous question SQ001 et la SQ010 qui excluent toutes les autres ... Donc je les ait mise en Exclusion ... ça fonctionne bien si je rajoute aucun code dans le champs "équationde validation" ... Sinon, j'ai la petite étoile rouge et je peux pas passer a la page suivante... (Problème N°1)
Deuxièmement si j'enlève cette option, mais que je faire plus de test par exemple la sous question 2 et 3 ou la sous question 3 et 4 ou la sous question 2 et 3 ...
ça me donne bien le message d'erreur mais celui-ci n'est pas en "rouge" et surtout me laisse passer vers la page suivante...
Voici le code que j'ai utilisé :
Dans la Box Equation de validation de la Question
(Q400101_SQ001!="Y") OR (Q400101_SQ002!="Y") OR (Q400101_SQ003!="Y") OR (Q400101_SQ004!="Y") OR (Q400101_SQ005!="Y") OR (Q400101_SQ006!="Y") OR (Q400101_SQ007!="Y") OR (Q400101_SQ008!="Y") OR (Q400101_SQ009!="Y") OR (Q400101_SQ010!="Y")
Dans la box Indication de validation de la question :
{if((Q400101_SQ002=="Y") AND (Q400101_SQ003=="Y"),"il y a une incohérence") OR if((Q400101_SQ002=="Y") AND (Q400101_SQ004=="Y"),"il y a une incohérence") OR if((Q400101_SQ003=="Y") AND (Q400101_SQ004=="Y"),"il y a une incohérence") OR if((Q400101_SQ007=="Y") AND (Q400101_SQ008=="Y"),"il y a une incohérence")}
> Dans la Box Equation de validation de la Question
Ici tu demande juste que l'une des case ne soit pas coché ... a mon avis : c'est pas ce que tu souhaite.
> Dans la box Indication de validation de la question :
Ne t'occupe pas de cette partie là avant, fait le au final.
Quand la logique est difficile, ce que je fait
1. Je sépare et j'(écit mes condition comme cela dans le TEXTE de la question {if(test1,"OK",KO")} puis {if(test2,"OK",KO")} etc ...
2. Je test donc bien séparément chaque test
3. Je place dans "Equation de validation de la Question" ( (test1) AND (test2) )
Il peut ensuite l'arriver d'ajouter les condition qui permete de passer, par exempl
( (test1) AND (test2) ) OR count(self.NAOK) == 0
Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member. -
Professional support
-
Plugins, theme and development
. I don't answer to private message.