On this page
calculate
Calculate
Calculate-spørsmål i XLSForm og rtSurvey brukes til å utføre beregninger basert på andre felt eller verdier i skjemaet. Disse spørsmålene vises ikke for brukeren, men kjører i bakgrunnen og lagrer resultatene for senere bruk eller innsending.
Syntaks
I XLSForm defineres et calculate-spørsmål som følger:
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_q1 | ${q1} + ${q2} |
- type: Alltid “calculate” for denne spørsmålstypen.
- name: Et unikt navn for calculate-spørsmålet.
- label: Vanligvis tom siden calculate-spørsmål ikke vises for brukere.
- calculation: Formelen som skal evalueres.
Brukstilfeller
Calculate-spørsmål brukes vanligvis for:
- Utføre aritmetiske operasjoner
- Slå sammen strenger
- Bruke kompleks logikk eller funksjoner
- Lagre mellomliggende resultater for senere bruk
Eksempler
Grunnleggende aritmetikk
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
Strengsammenslåing
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
Bruke funksjoner
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
Avansert bruk i rtSurvey
pulldata()-funksjonen
rtSurvey støtter pulldata()-funksjonen i calculate-felt, som lar deg hente data fra eksterne CSV-filer:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | city | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
Syntaks
Den grunnleggende syntaksen for pulldata() er:
pulldata('csv_filnavn', 'kolonne_å_returnere', 'nøkkelkolonne', ${samsvarende_verdi})
- ‘csv_filnavn’: Navn på CSV-filen (uten .csv-endelse)
- ‘kolonne_å_returnere’: Kolonnenavn som inneholder dataene du vil hente
- ’nøkkelkolonne’: Kolonnenavn som skal sammenlignes mot
- ${samsvarende_verdi}: Verdi å slå opp i nøkkelkolonnen
Viktige notater
- CSV-filen må lastes opp sammen med XLSForm ved distribusjon av spørreundersøkelsen.
- Bruk komma som separatorer i CSV-filen, ikke semikolon.
- Unngå komma innenfor datafeltene i CSV-en, da de kan forårsake analysefeil.
- pulldata() støtter bare 1-til-1-relasjoner. Hvis flere treff finnes, returneres bare det første.
- Det kan være begrensninger på tekstlengden som kan hentes (rundt 76 tegn).
Betingede beregninger
Du kan bruke if()-setninger for betingede beregninger:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
Beste praksis
- Bruk meningsfulle navn for calculate-felt for å forbedre skjemaets lesbarhet.
- Unngå altfor komplekse beregninger i ett enkelt felt; bryt dem ned om nødvendig.
- Test beregningene grundig, spesielt når du bruker komplekse formler eller eksterne data.
- Husk at calculate-felt kjøres hver gang skjemaet evalueres, noe som kan påvirke ytelsen for svært komplekse eller tallrike beregninger.
- Når du bruker pulldata(), sørg for at CSV-filene er riktig formatert og test grundig med dine spesifikke data og skjemastruktur.
Begrensninger
- Calculate-felt kan ikke redigeres direkte av brukere.
- Resultatet av et calculate-felt er ikke umiddelbart synlig med mindre det refereres til i et visningsfelt eller brukes i skjemalogikk.
Var denne siden nyttig?