On this page
calculate
Beräkna
Beräkningsfrågor i XLSForms och rtSurvey används för att utföra beräkningar baserade på andra fält eller värden i ditt formulär. Dessa frågor visas inte för användaren utan körs i bakgrunden och lagrar sina resultat för senare användning eller inlämning.
Syntax
I XLSForm definieras en beräkningsfråga enligt följande:
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_q1 | ${q1} + ${q2} |
- type: Alltid “calculate” för denna frågtyp.
- name: Ett unikt namn för beräkningsfrågan.
- label: Lämnas vanligtvis tomt eftersom beräkningsfrågor inte visas för användarna.
- calculation: Formeln som ska utvärderas.
Användningsområden
Beräkningsfrågor används vanligtvis för:
- Utföra aritmetiska operationer
- Sammanfoga strängar
- Tillämpa komplex logik eller funktioner
- Lagra mellanliggande resultat för senare användning
Exempel
Grundläggande aritmetik
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
Strängsammansättning
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
Använda funktioner
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
Avancerad användning i rtSurvey
Funktionen pulldata()
rtSurvey stöder funktionen pulldata() i beräkningsfält, vilket gör det möjligt att hämta data från externa CSV-filer:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | city | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
Syntax
Den grundläggande syntaxen för pulldata() är:
pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
- ‘csv_filename’: Namn på CSV-filen (utan .csv-tillägg)
- ‘column_to_return’: Kolumnnamn som innehåller de data du vill hämta
- ‘key_column’: Kolumnnamn att matcha mot
- ${matching_value}: Värde att söka upp i nyckelkolumnen
Viktiga anmärkningar
- CSV-filen måste laddas upp tillsammans med ditt XLSForm när undersökningen driftsätts.
- Använd kommatecken som separatorer i din CSV-fil, inte semikolon.
- Undvik kommatecken i datafälten i din CSV, eftersom de kan orsaka tolkningsproblem.
- pulldata() stöder bara 1-till-1-relationer. Om flera matchningar hittas returneras bara den första.
- Det kan finnas begränsningar för textlängd som kan hämtas (ca 76 tecken).
- Du kan använda pulldata() i begränsningar för att validera poster mot CSV-data.
Villkorliga beräkningar
Du kan använda if()-satser för villkorliga beräkningar:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
Bästa praxis
- Använd meningsfulla namn för beräkningsfält för att förbättra formulärläsbarheten.
- Undvik alltför komplexa beräkningar i ett enda fält; bryt ner dem om nödvändigt.
- Testa dina beräkningar noggrant, särskilt när du använder komplexa formler eller externa data.
- Kom ihåg att beräkningsfält körs varje gång formuläret utvärderas, vilket kan påverka prestandan för mycket komplexa eller många beräkningar.
- När du använder pulldata(), se till att dina CSV-filer är korrekt formaterade och testa noggrant.
Begränsningar
- Beräkningsfält kan inte redigeras direkt av användare.
- Resultatet av ett beräkningsfält är inte omedelbart synligt om det inte refereras i ett visningsfält eller används i formulärlogik.
Var den här sidan hjälpsam?