Survey123 Data Loss Problem on Decimal Fields

Idea created by codeboy on Jul 18, 2019
    • codeboy



    Different countries in the world use different symbols as a decimal or thousands separator.

    Some use a period, others a comma. Take a look:

    Decimal separator - Wikipedia 


    Due to the way Survey123 interprets these symbols, this became a data loss source.


    The Problem



    A little while ago, when you were answering a decimal field in a Survey123 form, if you mistakenly used the wrong decimal separator (say, a comma when it should be a period), you'd risk getting a null value in the geodatabase without the user receiving any warning about it.


    Supposing the correct decimal separator were a comma, the Survey123 behaviour was the following:


    Value typedValue actually stored


    On the latest updates (version 3.5.157, or maybe earlier),
    the behaviour became to ignore the separator:


    Value typedValue actually stored


    This is also problematic. Once again you risk having the wrong value sent to the geodatabase.


    Survey123 tries to figure out how to interpret the separators by taking a look at the devices settings. 


    But this is not good enough, once it doesn't prevent the user typing the wrong separator. 


    Here we have devices that have the same culture settings, but they differ on the separator settings.

    We also give our surveys to many different people to answer.

    The data loss problem happens once most users all users don't care to check which separator is configured on their devices before answering a survey.

    And even if you do so, you might still end up using the wrong separtor. Our team is professionally diverse and some of us are quite used to type a period as a decimal separator - although the "official" decimal separator of our country is a comma.


    Proposed Solution


    Use the ancient wisdom of the Windows calculator! \o/


    While answering a survey you should not be allowed to type the thousands separator, only the decimal one.
    The program automatically displays the thousands separator while you type! 


    If the wrong decimal separator is typed, it should simply be ignore.