Gå till slutet av bannern
Gå till början av bannern

Exempel: Alkoholvanor

Hoppa till slutet på meta-data
Gå till början av metadata

Du visar en gammal version av den här sidan. Visa nuvarande version.

Jämför med nuvarande Visa sidhistorik

« Föregående Version 2 Nästa »

Följande exempel visar hur man kan skriva en beräkningsformel på frågor med valbara alternativ.

Frågeformulär

Då det är en Radioknapp (radio) så används svarsalternativets ordningstal (answerAlternativeNumber) som svarsvärde. 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.

2 ALKOHOLPROBLEM - ÖVERSIKT

answerAlternativeNumber (altNo)

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.

Se längre ner för en förklaring av varje steg.

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 answerAlternativeNumber

  // 1. Hur ofta dricker du alkohol?
  altNo = $q.get("2.1").intValue();
  switch (altNo)  {
    case 1: break;
    case 2: summa = summa + 1;
            break;
    case 3: summa = summa + 2;
            break;
    case 4: summa = summa + 3;
            break;
    case 5: summa = summa + 4;
            break;
  }

  // 2. Hur många ”glas” (se exempel) dricker ....
  altNo = $q.get("2.2").intValue();
  switch (altNo)  {
    case 1: break;
    case 2: summa = summa + 1;
            break;
    case 3: summa = summa + 2;
            break;
    case 4: summa = summa + 3;
            break;
    case 5: summa = summa + 4;
            break;
  }

  // 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


Förklaring av formeln.

Vi har valt att sätta det unika id:et för varje fråga 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 unik.

Vi har valt att även lägga till kommentarer i formeln för att tydligöra denna.

I when-blocket

  1. vi skapar vi en lokal variabel $q med alla svar.

  2. vi säkerställer vi att inga svar är null

I then-blocket

  1. Vi börjar med att skapa en variabel summa av typen double som håller vår summering

  2. Vi skapar en variabel med namnet altNo som svarsalternativets ordningstal. Vi använder Javas primitiv int då vi senare vill använda denna variabeln i switch-satsen.

  3. För varje unika frågeid hämtar vi ut dess svar för att räkna poäng.

  4. Vi använder sedan Java switch-sats för att fånga rätt svarsalternativ. Här är det viktigt att alltid avsluta varje case med break så den inte automatiskt går vidare till nästa case.

  5. I varje case räknar vi upp summa med den önskade poängen.

  6. Vi avslutar sedan med sätta variabeln outcome med vår framräknade summa

 

  • Inga etiketter