Use Previous forms

Hello All,

I am a new user of ODK. I discovered this kind of forms with Kobo but Kobo doesn’t have the functionality that I want, so I pass on ODK.

I try to set up a tool to read index of meter in the framework of a water supply project. I want to use ODK because it is the perfect combination of a quite simple code and a lot of functionalities but I have a problem.

All the meter that will be red are referenced with a meter number, a customer number and an adress in .csv file

My idea is the meter reader comes to an house with odk collect on a tablet, identified the meter of the house by the address, or the customer number or the meter number ( This is in theory possible with ODK) and read the index. What I want is to set up a functionality to indicate either if the meter has been already red by an other meter reader in the previous day ( in order to avoid a double reading) or either to indicate which meter are not yet red.

To be clearer, I want a form based on my .csv database which indicates which meter are not yet red. This implies a communication between the data collected, the form and the .csv file. I saw that it was not possible in 2015. I hope some people worked on it since.

Thanks for your answer,


Hi @pmuller

I am afraid your use case is not fully supported yet in ODK 1.0 tool set. I am not sure if its fully supported in the ODK 2.0 tool set.

You can file a feature request

Dear Pierre,

If you have ready internet access so you can sync regularly, you should be able to do this with ODK 2.0. Rather than having a csv, in ODK 2.0 you can import csvs of data into ODK Tables:

When you update data and sync regularly (before reading the meter) you can get the visit date, either as a variable within the survey or based on the updated date on the instance.


Hi Pierre,

I think this capability is available in ODK through the use of CSV files.
It sounds like you will need two files.

  1. The CSV file that you mentioned relating meter number to address and
    customer number. You can use a search() function to populate a select
    question with data from the CSV or use the pulldata() function to get say
    the customer number from the meter number etc.
  2. A second CSV file with all the meter numbers and their readings and
    the date of reading.

The first CSV file should be reasonably static but the second would change
on a daily basis. Hence presumably you would need to set up an automated
process on the server to update it.

Some ODK servers may assist in this automated process. For example the
Smap server allows you to treat another survey as a CSV file so every time
you refresh your phone you will get the latest data. In you case you could
then use the following to get the latest reading and reading date for a

pulldata(‘linked_self’, ‘reading’, ‘meter’, ${meter})
pulldata(‘linked_self’, ‘reading_date’, ‘meter’, ${meter})

‘linked_self’ tells the server to get the csv data from the same form.