Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

If-then-Bedingung im Expression Manager scheint nicht zu funktionieren

More
5 years 11 months ago #168181 by fonte
Hallo,
ich versuche seit Tagen eine Matrix-Tabelle (flexible mit Checkboxen) auszuwerten.
Weil ich dabei Bedingungen abfragen muss, verwende ich den Expression Manager.
Aber schon bei der ersten If-then–Abfrage scheitere ich grandios, ohne dass ich auch nur ansatzweise eine Erklärung dafür habe.
So sieht die Abfrage aus, mit der ich die Antworten der ersten Zeile der Matrix überprüfen will:
(pluspunkt wurde zuvor auf '1' gesetzt, was auch funktioniert)

{if(q5_SQ001_A1.shown == '1', 'ok', pluspunkt eq 0)}
{if(q5_SQ001_A2.shown == '1', 'ok', pluspunkt eq 0)}
{if(q5_SQ001_A3.shown == '1', 'ok', pluspunkt eq 0)}
{if(q5_SQ001_A4.shown != '1', 'ok', pluspunkt eq 0)}
{if(q5_SQ001_A5.shown == "", 'ok', pluspunkt eq 0)}
{if(q5_SQ001_A6.shown == "", 'ok', pluspunkt eq 0)}
{if(q5_SQ001_A7.shown == "", 'ok', pluspunkt eq 0)}

Das Beispiel habe ich als 'WortartenTabellemitPunktenEM1.lss' hochgeladen
Ich teste die Umfrage lokal mit Uwamp,
LimeSurvey Version 3.7.1+180424
Auch die Version 3.6.1 zeigte das gleiche Verhalten.

Was mir dabei auffällt ist, dass die true-Bedingung sauber abläuft,
wenn also alles so eingegeben wird, wie in der Bedingung genannt wird.
Sobald aber die Bedingung false ist, wird der Befehl nicht ausgeführt/ignoriert.
Der Variablen pluspunkt wird dann nicht der neue Wert 0 zugewiesen, sondern bleibt bei 1.
Ich habe so ziemlich alle Schreibweisen durchprobiert, die Syntax wird vom EM auch akzeptiert.
Die Variablen scheinen auch gültig zu sein.
Für jeden Hinweis bin ich dankbar.
fonte
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 11 months ago #168183 by holch
Was soll denn "pluspunkt eq 0" sein?

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
More
5 years 11 months ago #168186 by fonte
Hallo Holch,
habe im Manual gesehen, dass eq ein Operator ist, der für das Gleichheitszeichen stehen kann.
pluspunkt eq 0 sollte demnach gleichbedeutend sein mit pluspunkt = 0
Bin was EM betrifft, ein totaler Anfänger. Vielleicht ist eine solche Variablenzuweisung ja gar nicht möglich in LS.
Das Gleichheitszeichen habe ich aber auch ausprobiert.
fonte
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 11 months ago #168187 by holch
Ich verstehe dein ganzes Konzept nicht. Die erste Frage scheint mir schon falsch konzipiert, weil ja jedes Wort nur einem Worttyp zugeordnet werden kann, warum da also eine Frage mit Checkboxen verwendet wird ist mir schleierhaft.

Dann kann ich die anderen Fragen nicht wirklich zuordnen. Was sollen diese Fragen denn alle machen?

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
More
5 years 11 months ago #168188 by fonte
Das Konzept ist tatsächlich ganz anders als bei einer typischen Umfrage,
es ist eine Art Assessment, eine Lernkontrolle. Die Auswertung soll dann an den Testteilnehmer einen Punkt vergeben, wenn er eine ganze Zeile in der Matrix richtig beantwortet hat, nur dann bekommt er einen Punkt.
Also einen Punkt für die ganze Zeile, nicht für jedes richtige Kreuz in der Checkbox.
Wenn er einen Fehler in der Zeile macht, ist der Punkt weg.
Die Variable pluspunkt wird dann auf 0 gesetzt. In der Rechnung unter der Frage kommt dann kein Punkt zu den Gesamtpunkten hinzu.
Das Ganze ist wahrscheinlich auch etwas unverständlich, weil hier nur die erste Zeile vorgestellt wird.
Das hat aber schon nicht richtig funktioniert. Immerhin ist die Punktzahl richtig, wenn die ersten drei Checkboxen richtigerweise ausgewählt wurden.
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 11 months ago #168189 by holch
Ja, aber im Moment erlaubst du den Teilnehmern z.B. für jedes Wort jeden Worttyp auzuwählen, also auch Mehrfachauswahl. Und das kann es ja nicht sein. Jedes Wort kann genau ein Worttyp sein. Der ist entweder richtig oder falsch. Der richtige Fragentyp wäre Array oder Array by column gewesen, wenn du die Achsen so belassen willst, wie sie im Moment sind (was ich auch nicht sehr gelungen finde). Meiner Meinung nach sind ja die Worttypen die Antwortoptionen und die Worte sind die Subquestions. Das solltest du also nochmal überdenken.

Das andere Konzept habe ich jetzt besser verstanden. Werde mir mal Gedanken machen, wie man das sinnvoll umsetzen kann.

Einmal stört mich schon das "Shown", denn das bezieht sich ja auf die Antwortoption. Ich denke da ist schon mal der erste fehler. Ich glaube auch das eq ist hier die falsche Wahl. Werde mal ein bisschen experimentieren.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
More
5 years 11 months ago #168190 by fonte
Zur Erläuterung eine Grafik:
sie zeigt, dass für jede Wortart durchaus mehrere Antwortmöglichkeiten zutreffend sind.
Deshalb die Multiple-Choice Matrix.
Den Punkt gibt es, wie gesagt, nur für die ganze Zeile, wenn alle Checkboxen richtig gesetzt sind.
fonte
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 11 months ago - 5 years 11 months ago #168191 by holch
Richtig, jede Wortart kann mehrere Worte haben, aber hier ein Beispiel das mit deinem Ansatz möglich ist, aber leider halt in Wirklichkeit unmöglich. Deshalb mein Vorschlag mit dem switchen der Achsen oder eben Array by Column.


Hier kann die Zeile zwar richtig sein, aber insgesamt ist die Antwort natürlich falsch.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Last edit: 5 years 11 months ago by holch.
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 11 months ago #168193 by holch
In jeder Spalte sollte doch nur EINE Antwort möglich sein, oder? Dann Array by column.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 11 months ago #168195 by Joffm
Hallo,

habe im Manual gesehen, dass eq ein Operator ist, der für das Gleichheitszeichen stehen kann.
pluspunkt eq 0 sollte demnach gleichbedeutend sein mit pluspunkt = 0


Du bist anscheinend noch nicht ganz vertraut mit dem Unterschied zwischen einem Vergleich und einer Zuweisung.

"A eq B" ist ein Vergleich; es wird geprüft, ob A gleich B ist. Das wird in LS auch geschrieben "A==B".

Hingegen ist "A=B" eine Zuweisung. Der Variablen "A" wird der Wert "B" zugewiesen" wie dann richtig "pluspunkt=0".


Deine erste Funktion könnte man so interpretieren:
{if(q5_SQ001_A1.shown == '1', 'ok', pluspunkt eq 0)}

Wenn q5_SQ001_A1 gleich 1 ist, dann hat die Gleichung den Wert "ok",
wenn nicht, hat die Gleichung den Wert "false" (da pluspunkt anfangs den Wert 1 hat, ist der Vergleich "pluspunkt eq 0" immer falsch.)

Nur noch einmal zur Erklärung.

Zu Deinem Design hat holch ja schon etwas gesagt.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: fonte
The topic has been locked.
More
5 years 11 months ago #168196 by fonte

In jeder Spalte sollte doch nur EINE Antwort möglich sein, oder? Dann Array by column.

Das wäre natürlich eine Möglichkeit, aber der Nachteil wäre eben, dass dann die Ratequote höher ist.
Wenn man drei Checkboxen richtig ankreuzen muss, um einen Punkt zu kriegen, ist Raten nicht so einfach.
Ok, bei 7 Optionen kann man auch Array by column nehmen. Ich plane das aber in zukunft mit weniger Checkboxen.

Dein zweiter Vorschlag

mit dem switchen der Achsen

werde ich mir mal genauer durch den Kopf gehen lassen.
Wobei die Frage ist, ob dann die If-Bedingungen funktionieren. Ich glaube nämlich, dass es letztlich daran hakt.
Könnte es denn möglich sein, dass ich die Variablen falsch angelegt habe? Haben wir es womöglich mit einem Bug zu tun? (Ich weiß, dass das etwas vermessen klingt, wenn ein EM-Anfänger so etwas vermutet.)

Jedenfalls danke ich dir erstmal sehr herzlich für deine Vorschläge. Wenn du herausfindest, wo der Knackepunkt ist, lass es mich bitte wissen,
fonte
The topic has been locked.
More
5 years 11 months ago #168198 by fonte

Wenn q5_SQ001_A1 gleich 1 ist, dann hat die Gleichung den Wert "ok",
wenn nicht, hat die Gleichung den Wert "false" (da pluspunkt anfangs den Wert 1 hat, ist der Vergleich "pluspunkt eq 0" immer falsch.)


Das ist genau der Punkt:
Ich habe ja vorher beim endlosen Experimentieren auch diese Variante ausprobiert:
"pluspunkt = 0"
Es sollte ja auch kein Vergleich sein, sondern ausdrücklich eine Zuweisung. Und genau das funktioniert nicht in meinen If-Anweisungen.
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose