Hallo,
es wäre sicher gut gewesen, Du hättest einmal die Beispielstudien durchgearbeitet.
www.limesurvey.org/manual/ExpressionScript_sample_surveys
Jetzt zu Deinem Versuch die Punkte einer Gruppe mit EM zu berechnen.
Für die Funktion "sum" steht im Handbuch
sum Calculate the sum of values in an array number sum(arg1, arg2, ... argN)
Und Du willst die Assessment-Werte der einzelnen Fragen der Gruppe aufsummieren.
Den Assessment-Wert bekommst Du mit
Qcode.value the assessment value for the question if it is relevant (otherwise blank), or the text value if it is not a coded question
Naürlich mit NAOK, es können ja einige Fragen nicht beantwortet sein.
Also sieht Deine Funktion so aus (hängt natürlich vom Fragentyp ab, ich nehme einmal Einfachnennung
{sum(Q1.valueNAOK,Q2.valueNAOK,Q3.valueNAOK,Q4.valueNAOK)}
Was die reservierten Variablen "this", "that" und "self" angeht, lies auch hier das Handbuch und studiere die Beispiele.
Nur kurz:
Wird hauptsächlich benutzt um Zeilen, Spalten, Zellen einer Matrix zu zählen, zu summieren, etc.
Denn in einer Matrix(Zahlen) mit der Kodierung der Zeilen "Y001", "Y002",... und der Spalten mit "X001", X002",... wird diese Form
{sum(that.Q1.sq_Y001)}
erweitert zu
{sum(that.Q1_Y001_X001,that.Q1_Y001_X002,that.Q1_Y001_X003,that.Q1_Y001_X004,...)}
und errechnet die Summe der ersten Zeile, während
{sum(that.Q1.sq_X001)}
die Summe der ersten Spalte errechnen würde.
Und der Unterschied zwischen "self" und "that"?
Wie der Name sagt, "self" berechnet die Frage, in welcher es benutzt wird, z.B. in Validierungen, oder als laufende Anzeige.
Dazu ist dann nicht die Angabe des Fragencodes notwendig, also nur
{sum(self.sq_Y001)}
"that" hingegen referiert eine andere Frage; daher ist hier der Fragencode notwendig.
Noch ein Wort zu Deinem Versuch mit "gid".
Im Handbuch steht
Qcode.gid the internal group number (not the sequential number) {gender.gid}
Dies zeigt also einfach den Code der Gruppe an.
Und wo schreibst Du diese obige Funktion hin?
Überall, wo Du etwas anzeigen willst.
Im Fragentext irgendeiner späteren Frage, in den Antwortoptionen einer späteren Frage, oder wie bei Dir, in der End-message.
Da würde dann etwas stehen wie
Ihr erreichter Score für die Gruppe 2 ist {sum(Q1.valueNAOK,Q2.valueNAOK,Q3.valueNAOK,Q4.valueNAOK)}
Da musst Du Dich nicht mit Bewertungsregeln herumschlagen. Das ist alles.
Jetzt kommt ein weiterer Schritt:
Wenn Du mit Assessment arbeitest, werden diese Werte nicht in der Datenbank gespeichert.
In unserem Beispiel bisher auch nicht, der Wert wird ja nur angezeigt.
Um ihn zu speichern, und gleichzeitig eine Variable zu haben, mit der Du weiter rechnen kannst, legst Du eine oder mehrere Fragen vom Typ "Gleichung" an.
Nenne sie meinetwegen "Score1" (für den Score der ersten Gruppe)
in den Fragetext kommt nichts, nur die Funktion
{sum(Q1.valueNAOK,Q2.valueNAOK,Q3.valueNAOK,Q4.valueNAOK)}
Und für die zweite Gruppe analog;
Frage vom Typ "Gleichung", diesmal "Score2" genannt
{sum(Q11.valueNAOK,Q12.valueNAOK,Q13.valueNAOK,Q14.valueNAOK)} (wenn dies die Fragen der zweiten Gruppe sind)
Nun hast Du in der Datenbank zwei Spalten mit ebendiesen Namen und den Werten.
Außerdem kannst Du nun auch in Deiner End-Message darauf zurückgreifen.
Ihr erreichter Score für die Gruppe 1 ist {Score1}
Ihr erreichter Score für die Gruppe 2 ist {Score2}
Ihr Gesamt-Score ist {sum(Score1,Score2)}
Ihr Durchschnitts-Score ist {sum(Score1,Score2)/2}
Du kannst also vieles damit anstellen.
Joffm