Alkoholvanor
Följande exempel visar hur man kan skriva en beräkningsformel på frågor med valbara alternativ.
Gå direkt till rubriken:
Frågeformulär
Då det är en Radioknapp (radio) så används svarsalternativets ordningstal (answerAlternativeNumber) som svarsvärde, 1,2,3 osv.. Detta innebär att när man hämtar ut frågans svar så får man ordningstalet att jobba med.
För att göra exemplet mer läsbart så har frågorna 3 till 9 uteslutits. Nedan ser du frågorna 1, 2 och 10.
Varje svarsalternativ har en poäng som skall summeras.
2 ALKOHOLPROBLEM - ÖVERSIKT | |||||
| Poäng | ||||
Svarsalternativets ordningstal: | 1 | 2 | 3 | 4 | 5 |
1 Hur ofta dricker du alkohol? | Aldrig 0 | 1 gång/mån el. mer sällan 1 | 2-4 ggr/mån 2 | 2-3ggr/vecka 3 | 4 ggr/vecka el. mer 4 |
2 Hur många ”glas” (se exempel) dricker du en typisk dag då du dricker alkohol? | 1-2 glas 0 | 3-4 glas 1 | 5-6 glas 2 | 7-9 glas 3 | 10 glas el. mer 4 |
........ | |||||
10 Har en släkting eller vän, en läkare (eller någon annan inom sjukvården) oroat sig över ditt drickande eller antytt att du borde minska på det? | Nej 0 | Ja, men inte under det senaste året 2 | Ja, under det senaste året 4 |
Beräkningsformel
Nedan ser du hur formeln kan se ut för att beräkna summa på de olika svarsalternativen som respondenten valt. Vi har valt att använda Javas switch-sats för de olika alternativen.
Förklaring av formeln
Vi har valt att sätta "Frågans ID" till rubrik och frågenummer, 2.1, 2.2. osv. Detta är självklart valfritt hur man vill göra så länge som "Frågans ID" är unikt.
Vi har även valt att lägga till kommentarer i formeln för att tydligöra den något.
I when-blocket
vi skapar en lokal variabel
$q
utavQuestions
som innehåller alla svar.vi säkerställer att inga svar är utelämnade (
null
)
I then-blocket
Vi börjar med att skapa en variabel
summa
av typendouble
som håller vår summeringVi skapar en variabel med namnet
altNo
som är svarsalternativets ordningstal. Vi använder Javas primitivint
då vi senare vill använda denna variabeln i switch-satsen.För varje unika frågeid hämtar vi ut dess svar för att räkna poäng.
Eftersom fråga 1 och 2 ger poängen svarsalternativ minus 1, dvs. alternativ 1 ger 0 poäng, alternativ 2 ger 1 poäng osv., så subtraherar vi med 1 från frågesvaret i beräkningen.
För fråga 10 så använder vi sedan Java switch-sats för att fånga rätt svarsalternativ då vi inte kan använda samma metod som ovan. Här är det viktigt att alltid avsluta varje
case
medbreak
så den inte automatiskt går vidare till nästacase
.I varje
case
räknar vi uppsumma
med den önskade poängen.Vi avslutar sedan med sätta variabeln
outcome
med vår framräknade summa
Formel
when
$q: Questions()
eval($q.get("2.1") != null)
eval($q.get("2.2") != null)
eval($q.get("2.3") != null)
eval($q.get("2.4") != null)
eval($q.get("2.5") != null)
eval($q.get("2.6") != null)
eval($q.get("2.7") != null)
eval($q.get("2.8") != null)
eval($q.get("2.9") != null)
eval($q.get("2.10") != null)
then
double summa = 0; // variabel för att hålla summering
int altNo = 0; // variabel för svarsalternativ
// 1. Hur ofta dricker du alkohol?
summa = summa + $q.get("2.1").intValue() -1;
// 2. Hur många ”glas” (se exempel) dricker ....
summa = summa + $q.get("2.2").intValue() -1;
//.... fråga 3-9
// 10. Har en släkting eller vän, en läkare ...
altNo = $q.get("2.10").intValue();
switch (altNo) {
case 1: break;
case 2: summa = summa + 2;
break;
case 3: summa = summa + 4;
break;
}
outcome.set(summa);
end