Use previous answers to fill next

Hi, dear all.

For a given form, if a group of variables should have the same answers for
several (e.g : up to 100) submissions of it, how to avoid entering those
common informations each time ?

In advance, thanks.


The first time i try this on ODK, it didn't work, but when i try it on surveycto it works when using surveycto collect. In the xlsform , make shore you link the first field to the next field which you think it should have the same answer/respomd, example, school_name for the name column on the xlsform for the first school, for the second school name it school_name2 and in the calculation column type this syntax ${school_name}. Make sure both are in text field type. So when you get to the question for school name 2 , the answer you give in school_name will preload and you can have the chance to edit it. This only work with surveycto collect, the last time i try it.

Fabla, this functionality should work on ODK Collect. If you can share a small form that works for SurveyCTO, I'm glad to try it in Collect and confirm that it also works!

Hi Yaw.
Yes i have just try it again and it works. I was using a lower version that was why

1 Like

Hi @yanokwa, i have just notice something about this feature, i have try it and when i download the data using briefcase, i realized that no change is made to the second question even if you change it. for example:

question 1, what is your best food,
answer: Rice

if you call in Rice to fill the next question say question 2: what food did you eat during launch time? the auto fill will be Rice, so if it happens that the respondent didn't eat rice during launch and ate Yam, when you change the rice to yam, when you download the data you will still have rice instead of yam.

i used ODK Collect 1.14.0 and briefcase 1.10.0


Evaluation of all calculations in a form is done on form save. In this case, that overwrites any value the user has supplied.

What you can do is use once() to only evaluate the default calculation if the value is blank:

type name label calculation
text school School
text school2 School2 once(${school})