Millisecond Forums

how to show all following surveypages after branch command

https://forums.millisecond.com/Topic22990.aspx

By wanda - 11/29/2017

Hello there,
I've got a problem with my questionnaire script. This questionnaire should figure out wether someone fits all criteria needed to participate in our study, therefore people are being asked a bunch of questions during the first few pages and if the answer 'incorrect' they are lead to the last survey page (surveypage 'raus'), telling them that they can't participate in this study. The branch commands work just fine, people get kicked out of the survey if the don't fit certain criteria and so on. Problem is: people who fit all criteria should just complete the whole survey, so the script should show them ALL pages following the criteria pages..it doesn't.
After the last survey page with these criteria the script just jumps back to a previous page with criteria and gets all messed up, after a while the following pages are shown but just if you push the next button like 10 times. Does anybody have a solution for this? Is there a command that tells Inquisit 'if people answer 1 show page 'raus' BUT if people answer 2 show ALL following pages'? 
Thanks a lot for your time guys!

p.s.: i'm using inquisit 4 and that is basically my script:

<surveypage1>
/ branch = [if (radiobuttons.xxx.response == "1") surveypage.raus
else surveypage.2]
/ branch = [if (radiobuttons.xxx_2.response == "1") surveypage.raus
else surveypage.2]
/ questions = [1 = xxx, xxx_2]
(...)
</surveypage>

<surveypage 2>
/ branch = [if (checkboxes.xxx_3.selected.16 == false) surveypage.raus
else surveypage.3]
/questions = [1 = xxx_3 ]
(...)
</surveypage>

<surveypage 3>
/ branch = [if (radiobuttons.xxx_4.response == "1") surveypage.raus
else surveypage.intro]
/questions = [1 = xxx_4]
 (...)
</surveypage>

this is the problematic part, the transition between the previous (page 3) and the following pages

<surveypage intro>
/ caption = "hvkchsaudcm,ascgb"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1)
/itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/ ontrialbegin = [shape.progressbar.width=80%*(values.currentpage/values.npages)]
/ stimulusframes = [1 = progressbar]
</surveypage>


(several pages in-between)


<surveypage raus>
/ caption = "We are really sorry, but you can't participate in our study. ..."
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1)
/itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/showpagenumbers = false
/showquestionnumbers = false
/ nextbuttonposition = (90%, 90%)
/ backbuttonposition = (80%, 90%)
/ showbackbutton = false
/ finishlabel = "beenden"
/ nextlabel = "beenden"
</surveypage>
By Dave - 11/30/2017

wanda - Thursday, November 30, 2017
Hello there,
I've got a problem with my questionnaire script. This questionnaire should figure out wether someone fits all criteria needed to participate in our study, therefore people are being asked a bunch of questions during the first few pages and if the answer 'incorrect' they are lead to the last survey page (surveypage 'raus'), telling them that they can't participate in this study. The branch commands work just fine, people get kicked out of the survey if the don't fit certain criteria and so on. Problem is: people who fit all criteria should just complete the whole survey, so the script should show them ALL pages following the criteria pages..it doesn't.
After the last survey page with these criteria the script just jumps back to a previous page with criteria and gets all messed up, after a while the following pages are shown but just if you push the next button like 10 times. Does anybody have a solution for this? Is there a command that tells Inquisit 'if people answer 1 show page 'raus' BUT if people answer 2 show ALL following pages'? 
Thanks a lot for your time guys!

p.s.: i'm using inquisit 4 and that is basically my script:

<surveypage1>
/ branch = [if (radiobuttons.xxx.response == "1") surveypage.raus
else surveypage.2]
/ branch = [if (radiobuttons.xxx_2.response == "1") surveypage.raus
else surveypage.2]
/ questions = [1 = xxx, xxx_2]
(...)
</surveypage>

<surveypage 2>
/ branch = [if (checkboxes.xxx_3.selected.16 == false) surveypage.raus
else surveypage.3]
/questions = [1 = xxx_3 ]
(...)
</surveypage>

<surveypage 3>
/ branch = [if (radiobuttons.xxx_4.response == "1") surveypage.raus
else surveypage.intro]
/questions = [1 = xxx_4]
 (...)
</surveypage>

this is the problematic part, the transition between the previous (page 3) and the following pages

<surveypage intro>
/ caption = "hvkchsaudcm,ascgb"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1)
/itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/ ontrialbegin = [shape.progressbar.width=80%*(values.currentpage/values.npages)]
/ stimulusframes = [1 = progressbar]
</surveypage>


(several pages in-between)


<surveypage raus>
/ caption = "We are really sorry, but you can't participate in our study. ..."
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1)
/itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/showpagenumbers = false
/showquestionnumbers = false
/ nextbuttonposition = (90%, 90%)
/ backbuttonposition = (80%, 90%)
/ showbackbutton = false
/ finishlabel = "beenden"
/ nextlabel = "beenden"
</surveypage>

First off, that script is missing either a <survey> or a <block> element that actually runs the various surveypages in the desired order. I don't know if you merely omitted that from the code you posted or if it's actually missing in the proper, full script as well. IF there is a <survey> or <block> element, then

"Problem is: people who fit all criteria should just complete the whole survey, so the script should show them ALL pages following the criteria pages..it doesn't.
After the last survey page with these criteria the script just jumps back to a previous page with criteria and gets all messed up [...]"

is probably due to you actually running the criteria pages _twice_:
(1) Once by invoking them via /branch, and
(2) A second time by invoking them via the <survey> element's /pages attribute (or the <block>'s /trials).

Secondly, the best solution for this type of scenario is to use /skip, not /branch. See e.g. the 2nd example at https://www.millisecond.com/forums/Topic5460.aspx#bm5461

In short: Include ALL pages in the <survey>'s /pages attribute. Then just /skip the ones that ought not be run based on the critreria responses. Do not use /branch in addition.
By wanda - 12/1/2017

Dave - Thursday, November 30, 2017
wanda - Thursday, November 30, 2017
Hello there,
I've got a problem with my questionnaire script. This questionnaire should figure out wether someone fits all criteria needed to participate in our study, therefore people are being asked a bunch of questions during the first few pages and if the answer 'incorrect' they are lead to the last survey page (surveypage 'raus'), telling them that they can't participate in this study. The branch commands work just fine, people get kicked out of the survey if the don't fit certain criteria and so on. Problem is: people who fit all criteria should just complete the whole survey, so the script should show them ALL pages following the criteria pages..it doesn't.
After the last survey page with these criteria the script just jumps back to a previous page with criteria and gets all messed up, after a while the following pages are shown but just if you push the next button like 10 times. Does anybody have a solution for this? Is there a command that tells Inquisit 'if people answer 1 show page 'raus' BUT if people answer 2 show ALL following pages'? 
Thanks a lot for your time guys!

p.s.: i'm using inquisit 4 and that is basically my script:

<surveypage1>
/ branch = [if (radiobuttons.xxx.response == "1") surveypage.raus
else surveypage.2]
/ branch = [if (radiobuttons.xxx_2.response == "1") surveypage.raus
else surveypage.2]
/ questions = [1 = xxx, xxx_2]
(...)
</surveypage>

<surveypage 2>
/ branch = [if (checkboxes.xxx_3.selected.16 == false) surveypage.raus
else surveypage.3]
/questions = [1 = xxx_3 ]
(...)
</surveypage>

<surveypage 3>
/ branch = [if (radiobuttons.xxx_4.response == "1") surveypage.raus
else surveypage.intro]
/questions = [1 = xxx_4]
 (...)
</surveypage>

this is the problematic part, the transition between the previous (page 3) and the following pages

<surveypage intro>
/ caption = "hvkchsaudcm,ascgb"
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1)
/itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/ ontrialbegin = [shape.progressbar.width=80%*(values.currentpage/values.npages)]
/ stimulusframes = [1 = progressbar]
</surveypage>


(several pages in-between)


<surveypage raus>
/ caption = "We are really sorry, but you can't participate in our study. ..."
/ fontstyle = ("Arial", 3%, false, false, false, false, 5, 1)
/subcaptionfontstyle = ("Arial", 1.5%, false, false, false, false, 5, 1)
/itemfontstyle = ("Arial", 2.5%, false, false, false, false, 5, 1)
/responsefontstyle = ("Arial", 2%, false, false, false, false, 5, 1)
/ txcolor = (0, 0, 0)
/showpagenumbers = false
/showquestionnumbers = false
/ nextbuttonposition = (90%, 90%)
/ backbuttonposition = (80%, 90%)
/ showbackbutton = false
/ finishlabel = "beenden"
/ nextlabel = "beenden"
</surveypage>

First off, that script is missing either a <survey> or a <block> element that actually runs the various surveypages in the desired order. I don't know if you merely omitted that from the code you posted or if it's actually missing in the proper, full script as well. IF there is a <survey> or <block> element, then

"Problem is: people who fit all criteria should just complete the whole survey, so the script should show them ALL pages following the criteria pages..it doesn't.
After the last survey page with these criteria the script just jumps back to a previous page with criteria and gets all messed up [...]"

is probably due to you actually running the criteria pages _twice_:
(1) Once by invoking them via /branch, and
(2) A second time by invoking them via the <survey> element's /pages attribute (or the <block>'s /trials).

Secondly, the best solution for this type of scenario is to use /skip, not /branch. See e.g. the 2nd example at https://www.millisecond.com/forums/Topic5460.aspx#bm5461

In short: Include ALL pages in the <survey>'s /pages attribute. Then just /skip the ones that ought not be run based on the critreria responses. Do not use /branch in addition.

Appreciate your help Dave, thanks a lot! 
I just forgot the <survey> element in my post, luckily not in my real script, double checked it. I found another solution now by using the skip commands. But it's good to know why the previous script wasn't working. Thanks again.