Welcome to the LimeSurvey Community Forum

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

Matrix Zahleneingabe mit extra Antwortoptionen "trifft nicht zu", "weiß nicht"

  • Eunrau
  • Eunrau's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
8 months 2 weeks ago #245723 by Eunrau
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: 5.6.31
Eigener Server oder LimeSurvey-Cloud: Cloud
Genutzte Designvorlage:
==================

Hallo allerseits,

Ich möchte eine Matrix mit Zahleneingabe anlegen, wo die Teilnehmenden für jede Hierarchieebene (z.B. Geschäftsleitung, Bereichsleitung, Gruppenleitung etc. als Teilfragen) die Anzahl der Frauen, davon Teilzeit, die Anzahl der Männer, davon Teilzeit und beides jeweils zum 30.06.2019 und zum 30.06.2023 eintragen. So weit hat das auch alles funktioniert mit 2 unterschiedlichen Headern und Zahleneingabe als Dropdown.

Da es eine Pflichtfrage sein soll, brauche ich jetzt allerdings noch die Antwortkategorien "trifft nicht zu" bzw. "weiß nicht". Einerseits weil bestimmte Hierarchieeben vllt. nicht vorhanden sind, andererseits damit die Teilnehmenden nicht entnervt überall "0" auswählen müssen, um weiter zu kommen.

Im Tutorial zu Matrizen von Joffm habe ich unter Kapitel 8 ("Matrix(Zahlen) im Checkbox-Layout mit letzter Spalte exklusiv") die Möglichkeit gesehen, so ein "trifft nicht zu" bzw. "Keine davon" bei einer Matrix(Zahlen) zu implementieren, allerdings habe ich ja in meinem Fall kein Checkbox-Layout.
Ist dies auch hier möglich? Zudem soll das "trifft nicht zu" bzw. "weiß ich nicht" 2x rechts erscheinen, weil ich die Matrix ja durch 2 Header geteilt habe.

Ich hänge die .lss an und bedanke mich ganz herzlich im Voraus!

Freundliche Grüße,
Eugen 

File Attachment:

File Name: limesurvey...9854.lss
File Size:52 KB

 

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 months 2 weeks ago #245727 by Joffm
Hallo, Eugen,
Pflichtfrage heißt: ALLE Zellen müssen ausgefüllt sein; da nützt auch eine Spalte "KA" nichts.
Im erwähnten Beispiel diente sie ja dazu, "KA" exklusiv anzukreuzen, also nicht zusammen mit anderen Optionen.

Was Du machst, ist wohl wieder einmal das "Nachbauen" eines Papierfragebogens.
Wie solltest Du es machen?

einerseits weil bestimmte Hierarchieeben vllt. nicht vorhanden sind

Eben: Du erfragst vorher, welche Ebenen vorhanden sind (Mehrfachnennung) und zeigst dann nur noch diese in Deiner Matrix an (Matrixfilter)
Außerdem finde ich es ziemlich nervend, hier Drop-downs einzusetzen.
Der Teilnehmer muss zunächst klicken, damit es sich öffnet - und dann noch einmal, um den Wert auszuwählen. 
Das nervt wirklich.
Es geht zwar mit TAB und Zahleingabe; aber das weiß der Teilnehmer meist nicht.
Also da ist eine einfache Zahleingabe wirklich angenehmer - und auch schneller.

Nun kommt der nächste Punkt: Validierung.
Du musst ja testen, dass die Anzahl der Teilzeitmänner nicht größer ist als die Gesamtmännerzahl (und das für alle Zellen)
Daher auch hier mein Vorschlag: Splitte, die Matrix. Frage zunächst nur nach Gesamt
In einer nächsten fragst Du dann - eben nur dort, wo es überhaupt Männer gab - nach den Teilzeitmännern.

So, wie es jetzt aussieht, ist es wirklich nicht gut machbar. 

Joffm


 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Eunrau
  • Eunrau's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
8 months 2 weeks ago - 8 months 2 weeks ago #245731 by Eunrau
Hallo Joffm,

danke dir. Ich verstehe. So ist es, ich versuche es nachzubauen. Die Frage soll leider Pflichtfrage sein. Das "trifft nicht zu" sollte dies quasi "ermöglichen" als Ausweichoption, im Sinne von jede Zeile wurde beantwortet. Aber es macht Sinn, dass LS bei der Einstellung Pflichtfrage darauf besteht dass alle Felder ausgefüllt sind.

Ich habe es jetzt so umgesetzt, dass ich vorher mit einer Liste abfrage, welche Ebenen vorhanden sind + Sonstiges. (lss anbei)
Der Matrix Filter funktioniert, auch mit Sonstiges. Leider funktioniert meine Bedingung für die Matrix jedoch nicht überall (Bedingung mit OR soll prüfen ob irgendein Eintrag ausgewählt wurde, sonst erscheint die Matrixfrage nicht). Wenn eine der Antwortoptionen in der Liste angeklickt wird, erscheint die Matrix. Wenn nur die Sonstige ausgefüllt wird, jedoch leider nicht. Außerdem erscheint die Leerzeile, wo der Inhalt von Sonstiges erscheint, wenn dort etwas eingetragen wurde auch ohne dass dieses ausgewählt wurde. Wo liegt der Fehler? Die Bedingung (G01Q01_other.NAOK == "Y") sollte doch eig. analog funktionieren.

Zum Thema Drop-Down: Kannst du mir sagen, wie ich das ausschalte? Ich sehe bei Matrix (Zahlen) nur die Option "als Ankreuzfelder". Oder muss ich eine Matrix (Texte) draus machen und nur Zahlen erlauben? Ist das möglich?

Um die Frage zur Validierung muss ich mich wohl später kümmern, weil die Zeit drängt. Dafür ist ja wahrscheinlich auch ein aufwendigeres Script notwendig, dass sicherstellt, dass die eine Zahl aus der einen Frage nicht größer ist als die andere etc. Erst einmal hoffe ich, dass die Teilnehmenden keine unsinnigen Zahlen eintragen. Und falls doch, werde ich sie im Nachhinein bereinigen müssen.


Vielen lieben Dank für deine Hilfe,
Eugen 

File Attachment:

File Name: limesurvey...8-11.lss
File Size:65 KB
Last edit: 8 months 2 weeks ago by Eunrau.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 months 2 weeks ago #245732 by Joffm
Hallo, Eugen,

okay, aber heute nicht mehr.

In der Zwischenzeit kannst Du Dir aber einmal in meinem "Tutorial 1: Matrizen, Kap. 9 anschauen.
Damit könnte man sogar Deine Idee basteln.
Du findest es hier im deutschen Teil auf einer der folgenden Seiten; wird wohl schon auf Seite 10 gerutscht sein.

Gut
Noch schnell nachgeschoben

Zum Thema Drop-Down: Kannst du mir sagen, wie ich das ausschalte?

In "Anzeige"
 

(Bedingung mit OR soll prüfen ob irgendein Eintrag ausgewählt wurd

Das macht man besser mit der Funktion "count"
count(that.Q1)>0

Um die Frage zur Validierung muss ich mich wohl später kümmern, weil die Zeit drängt. Dafür ist ja wahrscheinlich auch ein aufwendigeres Script notwendig

Es ist zwar lang, da man jede Zelle vergleichen muss, aber nicht aufwendig. Einfach ExpressionScript

Das war's aber für heute

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Eunrau
  • Eunrau's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
8 months 2 weeks ago #245733 by Eunrau
Lieber Joffm,

vielen lieben Dank!

Die Einstellung zu "Text als Eingabefelder" hab ich irgendwie übersehen, war wohl die Aufregung. Danke!

Auch die Funktion count hat super funktioniert. Außerdem habe ich eine Relevanz-Gleichung in die Teilfrage der Matrix, die die Sonstigen einblendet, eingebaut, sodass das Feld nur gezeigt wird, wenn die Sonstige nicht leer ist. Das klappt jetzt auch.

Ich habe mir Kapitel 9 schon angeschaut. Allerdings besteht ja weiterhin das Problem, dass es eine Pflichtfrage ist und deshalb alles ausgefüllt werden müsste. Oder wie könnte man damit das ursprüngliche Vorhaben basteln?

Und zu Validierung: Ich habe bisher ehrlich gesagt nur Bedingungen formuliert. Funktioniert das bei der Validierung ähnlich? Gebe ich die Formel unter "Allgemeine Einstellungen" und "Eingabevalidierung (RegExp)" ein?

Würde es ungefähr so lauten:

"{Q1_SQ001_SQ002} <  {Q1_SQ001_SQ001}"

"{Q1_SQ001_SQ004} <  {Q1_SQ001_SQ003}"

Also die Zahl, die in Spalte 2 steht (davon Teilzeit) muss kleiner sein als die in Spalte 1 (Anzahl Männer) und die in Spalte 4 (davon Teilzeit) kleiner als die in Spalte 3 (Anzahl Frauen). Könnte man dies auch direkt in die Matrix einbauen. Oder muss ich wirklich zuerst nach Gesamt fragen und die Validierung funktioniert dann erst in einer neuen Frage?

Wie ist das semantisch? Sind es dann einfach mehrere Validierungen (Leerzeichen? Komma?) oder muss ich ein AND oder OR dazu schreiben?


Vielen lieben Dank und einen schönen Feierabend,
Eugen

File Attachment:

File Name: limesurvey...ugen.lss
File Size:87 KB

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 months 2 weeks ago - 8 months 2 weeks ago #245738 by Joffm
Hallo, Eugen

Gebe ich die Formel unter "Allgemeine Einstellungen" und "Eingabevalidierung (RegExp)" ein?

Weder noch.
Dort auf der ersten Seite wird nur mittels "Regular Expression" validiert.
"Normale" Validierungen werden in "Logik / Frage-Validierungsgleichung" eingetragen.

Die geschweiften Klammern sind bereits angedeutet, werden als nicht mehr benutzt.
Dann noch eine knackige Meldung, die auch mittels IF verschieden sein kann

und alles ist gut.

Könnte man dies auch direkt in die Matrix einbauen. Oder muss ich wirklich zuerst nach Gesamt fragen und die Validierung funktioniert dann erst in einer neuen Frage?

Das verstehe ich nicht. Die Validierung geschieht doch in der Matrixfrage. Wieso eine neue Frage?

Wie ist das semantisch? Sind es dann einfach mehrere Validierungen (Leerzeichen? Komma?) oder muss ich ein AND oder OR dazu schreiben?

Das ist wie wir es in der Schule gelernt haben (Aussagenlogik, Boolsche Algebra, oder wie auch immer das Kind heißen soll)
Mögliche Operatoren findest Du hier
[url] manual.limesurvey.org/ExpressionScript_-...ntation/en#Operators [/url]

Zum Verknüpfen nur "AND" (&&;)  und "OR" (||)  
Es ist halt genauso wie Du es sprichst
Q1 ist größer als 4 und Q2 ist kleiner als Q1 --> Q1>4 AND Q2<Q1
Im "Tutorial 4: Gleichungen, Zufall" ist etwas darüber in den Vorbemerkungen..

Jetzt etwas zu Deinem Matrixfilter:
Du weißt, die Teilfragen-Codes in beiden Fragen müssen identisch sein.
Sind sie bei Dir aber nicht
In der zweiten Frage lautet der letzte Code (wo das "Sonstige" der ersten Frage hin soll) "SQ013"
Das ist aber nicht der Code des "Sonstigen in der ersten Frage.
Dabei kennst Du doch den Code. Du schreibst als Teilfragentext {G01Q01_other}; also Fragencode "G01Q01" und Teilfragencode? Genau, "other"
Also ändere das SQ013 in other.

Jetzt meine Meinung zu den Codes. Du hast in beiden Achsen das vorgegebene SQ001, SQ002 belassen.
Ich halte dies für ungünstig, da es leicht zur Verwirrung führt (was war Zeile, was war Spalte); daher benutze ich gerne Y001, Y002 für die y-Achse, X001, X002 für die x-Achse, oder auch eine Achse rein numerisch (damit es nicht gar so lang wird)
Darüberhinaus bietet sich nur so die Möglichkeit mit "that.sq_...") kurze, mächtige Berechnungen durchzuführen.

Dies zeige ich jetzt:
Wie ich bereits annahm, kann man das Beispiel aus dem Tutorial sehr gut "verwursten".
Und ich halte es auch für möglich, eine Spalte "weiß nicht" hinzuzufügen.
Es könnte ja sein, dass eine Abteilung zwar existiert, der Teilnehmer aber keine Ahnung von den Anzahlen hat.
Gut, normalerweise würde man sagen "Dann schätze es eben; eine qualifizierte Schätzung ist allemal besser als gar nichts gesagt". Aber es gibt immer diese verkopften Leute, die sich dazu nicht in der Lage sehen.


 
 


Ich habe die Frage einmal an Deine Umfrage angefügt.
 

File Attachment:

File Name: limesurvey...1567.lss
File Size:72 KB


Validierung ist etwas tricky. Ich habe dafür die "Anzahlfelder" links mit A001, A002 und rechts mit C001,C002 doe Checkboxen links mit B005 und rechts mit D010 kopdiert.
Dann ist klar, was gelten muss:
Entweder ist die Anzahl der A-Felder gleich 4 oder die Anzahl des B-Feldes
count(self.sq_Y001_A.NAOK)==4 OR count(self.sq_Y001_B.NAOK)==1
analog für die rechte Seite
count(self.sq_Y001_C.NAOK)==4 OR count(self.sq_Y001_D.NAOK)==1
Und das für alle Zeilen.

Und die Teilzeitkräfte?
Das muss wohl wirklich einzeln geschehen
Irgendwie
self.sq_Y001_A001.NAOK ge self.sq_Y001_A002.NAOK) AND self.sq_Y001_A003.NAOK ge self.sq_Y001_A004.NAOK) AND ...

Darüber denke ich noch einmal genauer nach.

Joffm

 





 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 8 months 2 weeks ago by Joffm.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 months 1 week ago #245748 by Joffm
Wie versprochen habe ich noch einmal nachgedacht.
Dabei ist mir aufgefallen, dass es noch einen kleinen Glitch in der übermittelten Umfrage gab (nicht besonders dramatisch, aber evtl. unschön)

Da auch die Validierung ziemlich umfangreich geworden wäre, hier die bessere Lösung.
1. Splitte die Frage
2. Frage nicht nach "Anzahl Gesamt" und "darunter Anzahl Teilzeit", sondern nach "Anzahl Vollzeit" und "Anzahl Teilzeit"

Vorteile: Es genügt pro Zeile zu validieren:
"Es ist richtig, wenn "die Teilfrage gar nicht angezeigt wird (da in der Vorfrage nicht ausgewählt) oder die Anzahl der eingegebenen Zahlen gleich 4 oder 'weiß nicht' geklickt wurde." 
In Logik-Syntax:
(Q1_Y001!="Y" OR count(self.sq_Y001_A.NAOK)==4 OR count(self.sq_Y001_B.NAOK)==1)

Die Validierung von "Gesamt" und "Teilzeit" entfällt jetzt.
Die Summe kannst Du entweder später im Auswerte-Tool berechnen, oder auch in LimeSurvey mittels ein paar Gleichungen.
Würde sogar interessant sein, diese "Gesamt"-Spalte schon in dieser Matrix anzulegen, aber mit dem Plugin "hideEmptyColumn" zu verstecken.
Das führt aber vielleicht ein bisschen weit.

Hier ein kleiner screenshot, wo ich die zweite Matrix direkt unter die erste platziert habe.
Dies mittels der css-Klasse "no-bottom" in der ersten Frage.
Code:
<style>
.no-bottom { border-bottom:0;margin-bottom:0; }
.no-bottom .answer-container {
    padding-top: 0em;
    padding-bottom: 0em;
}
</style>

 

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Eunrau
  • Eunrau's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
8 months 1 week ago #245756 by Eunrau
Lieber Joffm,

vielen lieben Dank! Ich konnte gestern nicht daran arbeiten, habe heute aber viel ausprobiert (auch weil ich es Schritt für Schritt lernen wollte) und deine letzte Variante mit gesplitteten Fragen, "weiß nicht" und ohne "davon" funktioniert jetzt gut. Nur für die "Sonstigen" geht es noch nicht, aber das schaue ich mir noch an.


Allerdings weiss ich nicht ob die Umstellung der Frage auf Anklang stoßen wird, deswegen hatte ich den Ehrgeiz, doch noch die Validierung mit "davon" zumindest hinzukriegen.

Also in der Logik: "Es ist richtig, wenn die Teilfrage gar nicht angezeigt wird (da in der Vorfrage nicht ausgewählt) oder alle davons dieser Teilfrage kleiner gleich den jeweiligen Gesamts sind"

Ich habe in der .lss anbei exemplarisch für die 2 ersten Antwortmöglichkeiten auf der y-Achse die Validierung ausformuliert. Und jetzt passiert das: Nur wenn ich in der Frage davor genau die beiden ersten auswähle, nur dann funktioniert die kleiner gleich Validierung für jeweils beide. Das gleiche habe ich mit der gesamten Formel für alle 12 Antwortmöglichkeiten ausformuliert und da funktioniert das ganze Script nur wenn alle 12 ausgewählt wurden. Außerdem bleibt der Validierungshinweis auch immer rot mit Ausrufezeichen, solange nicht alle 12 ausgewählt sind.
Das scheint hier also der Logik zu folgen: 12x Antwort ist "nicht leer" statt "nicht ausgefüllt". Dabei steht da ja !="Y".. Bei der anderen Variante (weiß nicht, ohne davon, mit count) gibt es das Problem nicht, obwohl die erste Hälfte der Formel der Validierung genauso formuliert ist.

Hat das irgendwas damit zu tun, dass die Vergleichsoperatoren nur funktionieren, wenn alle entsprechenden Felder eingeblendet sind (weil dann default mäßig eine 0 drin ist oder so?)? Und bei count bis 4 Antworten ist das egal!?

Kannst du evtl. einen Blick drauf werfen und hast du vllt. eine Idee woran das liegen könnte?

Das wäre toll! Vielen lieben Dank nochmal,
Eugen

File Attachment:

File Name: limesurvey...rung.lss
File Size:65 KB

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 months 1 week ago - 8 months 1 week ago #245757 by Joffm
Hallo, Eugen,
bevor ich mir Deine Umfrage ansehe,
hier das, was ich heute nachmittag ausgearbeitet habe.
Die Fragen haben die Fragecodes Q1 für die Vorfrage, Q1a und Q1b für die Fragen nach den Anzahlen
Dann haben wir diese beiden Fehlermeldungen
1. Nicht alles ausgefüllt
 
2. Teilzeit größer als Gesamt
 

Und das mit dieser Validierung für die Frage Q1a:
Code:
(Q1_Y001!="Y" OR count(self.sq_Y001_A.NAOK)==4 OR count(self.sq_Y001_B.NAOK)==1) AND
(Q1_Y002!="Y" OR count(self.sq_Y002_A.NAOK)==4 OR count(self.sq_Y002_B.NAOK)==1) AND
(Q1_Y003!="Y" OR count(self.sq_Y003_A.NAOK)==4 OR count(self.sq_Y003_B.NAOK)==1) AND
(Q1_Y004!="Y" OR count(self.sq_Y004_A.NAOK)==4 OR count(self.sq_Y004_B.NAOK)==1) AND
(Q1_Y005!="Y" OR count(self.sq_Y005_A.NAOK)==4 OR count(self.sq_Y005_B.NAOK)==1) AND
(Q1_Y006!="Y" OR count(self.sq_Y006_A.NAOK)==4 OR count(self.sq_Y006_B.NAOK)==1) AND
(Q1_Y007!="Y" OR count(self.sq_Y007_A.NAOK)==4 OR count(self.sq_Y007_B.NAOK)==1) AND
(Q1_Y008!="Y" OR count(self.sq_Y008_A.NAOK)==4 OR count(self.sq_Y008_B.NAOK)==1) AND
(Q1_Y009!="Y" OR count(self.sq_Y009_A.NAOK)==4 OR count(self.sq_Y009_B.NAOK)==1) AND
(Q1_Y010!="Y" OR count(self.sq_Y010_A.NAOK)==4 OR count(self.sq_Y010_B.NAOK)==1) AND
(Q1_Y011!="Y" OR count(self.sq_Y011_A.NAOK)==4 OR count(self.sq_Y011_B.NAOK)==1) AND
(Q1_Y012!="Y" OR count(self.sq_Y012_A.NAOK)==4 OR count(self.sq_Y012_B.NAOK)==1) AND
(is_empty(Q1_other) OR count(self.sq_other_A.NAOK)==4 OR count(self.sq_other_B.NAOK)==1) AND
Q1a_Y001_A002.NAOK le Q1a_Y001_A001.NAOK AND Q1a_Y001_A004.NAOK le Q1a_Y001_A003.NAOK AND
Q1a_Y002_A002.NAOK le Q1a_Y002_A001.NAOK AND Q1a_Y002_A004.NAOK le Q1a_Y002_A003.NAOK AND
Q1a_Y003_A002.NAOK le Q1a_Y003_A001.NAOK AND Q1a_Y003_A004.NAOK le Q1a_Y003_A003.NAOK AND
Q1a_Y004_A002.NAOK le Q1a_Y004_A001.NAOK AND Q1a_Y004_A004.NAOK le Q1a_Y004_A003.NAOK AND
Q1a_Y005_A002.NAOK le Q1a_Y005_A001.NAOK AND Q1a_Y005_A004.NAOK le Q1a_Y005_A003.NAOK AND
Q1a_Y006_A002.NAOK le Q1a_Y006_A001.NAOK AND Q1a_Y006_A004.NAOK le Q1a_Y006_A003.NAOK AND
Q1a_Y007_A002.NAOK le Q1a_Y007_A001.NAOK AND Q1a_Y007_A004.NAOK le Q1a_Y007_A003.NAOK AND
Q1a_Y008_A002.NAOK le Q1a_Y008_A001.NAOK AND Q1a_Y008_A004.NAOK le Q1a_Y008_A003.NAOK AND
Q1a_Y009_A002.NAOK le Q1a_Y009_A001.NAOK AND Q1a_Y009_A004.NAOK le Q1a_Y009_A003.NAOK AND
Q1a_Y010_A002.NAOK le Q1a_Y010_A001.NAOK AND Q1a_Y010_A004.NAOK le Q1a_Y010_A003.NAOK AND
Q1a_Y011_A002.NAOK le Q1a_Y011_A001.NAOK AND Q1a_Y011_A004.NAOK le Q1a_Y011_A003.NAOK AND
Q1a_Y012_A002.NAOK le Q1a_Y012_A001.NAOK AND Q1a_Y012_A004.NAOK le Q1a_Y012_A003.NAOK AND
Q1a_other_A002.NAOK le Q1a_other_A001.NAOK AND Q1a_other_A004.NAOK le Q1a_other_A003.NAOK

und diesem Validierungs-Hinweis
Code:
{if((Q1_Y001=="Y" AND count(self.sq_Y001_A.NAOK)!=4 AND count(self.sq_Y001_B.NAOK)!=1) OR
   (Q1_Y002=="Y" AND count(self.sq_Y002_A.NAOK)!=4 AND count(self.sq_Y002_B.NAOK)!=1) OR
   (Q1_Y003=="Y" AND count(self.sq_Y003_A.NAOK)!=4 AND count(self.sq_Y003_B.NAOK)!=1) OR
   (Q1_Y004=="Y" AND count(self.sq_Y004_A.NAOK)!=4 AND count(self.sq_Y004_B.NAOK)!=1) OR
   (Q1_Y005=="Y" AND count(self.sq_Y005_A.NAOK)!=4 AND count(self.sq_Y005_B.NAOK)!=1) OR
   (Q1_Y006=="Y" AND count(self.sq_Y006_A.NAOK)!=4 AND count(self.sq_Y006_B.NAOK)!=1) OR
   (Q1_Y007=="Y" AND count(self.sq_Y007_A.NAOK)!=4 AND count(self.sq_Y007_B.NAOK)!=1) OR
   (Q1_Y008=="Y" AND count(self.sq_Y008_A.NAOK)!=4 AND count(self.sq_Y008_B.NAOK)!=1) OR
   (Q1_Y009=="Y" AND count(self.sq_Y009_A.NAOK)!=4 AND count(self.sq_Y009_B.NAOK)!=1) OR
   (Q1_Y010=="Y" AND count(self.sq_Y010_A.NAOK)!=4 AND count(self.sq_Y010_B.NAOK)!=1) OR
   (Q1_Y011=="Y" AND count(self.sq_Y011_A.NAOK)!=4 AND count(self.sq_Y011_B.NAOK)!=1) OR
   (Q1_Y012=="Y" AND count(self.sq_Y012_A.NAOK)!=4 AND count(self.sq_Y012_B.NAOK)!=1) OR
   (!is_empty(Q1_other) AND count(self.sq_other_A.NAOK)!=4 AND count(self.sq_other_B.NAOK)!=1),'Bitte, füllen Sie alle Zellen aus oder "Weiß nicht"', if(Q1a_Y001_A002.NAOK gt Q1a_Y001_A001.NAOK OR Q1a_Y001_A004.NAOK gt Q1a_Y003_A001.NAOK OR
Q1a_Y002_A002.NAOK gt Q1a_Y002_A001.NAOK OR Q1a_Y002_A004.NAOK gt Q1a_Y002_A003.NAOK OR
    Q1a_Y003_A002.NAOK gt Q1a_Y003_A001.NAOK OR Q1a_Y003_A004.NAOK gt Q1a_Y003_A003.NAOK OR
    Q1a_Y004_A002.NAOK gt Q1a_Y004_A001.NAOK OR Q1a_Y004_A004.NAOK gt Q1a_Y004_A003.NAOK OR
    Q1a_Y005_A002.NAOK gt Q1a_Y005_A001.NAOK OR Q1a_Y005_A004.NAOK gt Q1a_Y005_A003.NAOK OR
    Q1a_Y006_A002.NAOK gt Q1a_Y006_A001.NAOK OR Q1a_Y006_A004.NAOK gt Q1a_Y006_A003.NAOK OR
    Q1a_Y007_A002.NAOK gt Q1a_Y007_A001.NAOK OR Q1a_Y007_A004.NAOK gt Q1a_Y007_A003.NAOK OR
    Q1a_Y008_A002.NAOK gt Q1a_Y008_A001.NAOK OR Q1a_Y008_A004.NAOK gt Q1a_Y008_A003.NAOK OR
    Q1a_Y009_A002.NAOK gt Q1a_Y009_A001.NAOK OR Q1a_Y009_A004.NAOK gt Q1a_Y009_A003.NAOK OR
    Q1a_Y010_A002.NAOK gt Q1a_Y010_A001.NAOK OR Q1a_Y010_A004.NAOK gt Q1a_Y010_A003.NAOK OR
    Q1a_Y011_A002.NAOK gt Q1a_Y011_A001.NAOK OR Q1a_Y011_A004.NAOK gt Q1a_Y011_A003.NAOK OR
    Q1a_Y012_A002.NAOK gt Q1a_Y012_A001.NAOK OR Q1a_Y012_A004.NAOK gt Q1a_Y012_A003.NAOK OR
    Q1a_other_A002.NAOK gt Q1a_other_A001.NAOK OR Q1a_other_A004.NAOK gt Q1a_other_A003.NAOK, 'Anzahl Teilzeit darf nicht größer sein als Anzahl Gesamt',''))}

Für Q1b ist alles ja nahezu identisch; nur Q1a zu Q1b ändern. Noch ein Vorteil von "self"; es bezeichnet immer mit der aktuellen Frage.

Ich sehe wirklich kein Problem.

Mal gucken, was bei Deinem Entwurf noch hakt.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 8 months 1 week ago by Joffm.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
8 months 1 week ago - 8 months 1 week ago #245759 by Joffm

Und jetzt passiert das: Nur wenn ich in der Frage davor genau die beiden ersten auswähle, nur dann funktioniert die kleiner gleich Validierung für jeweils beide. 

Völlig klar.
Du benutzt eine ODER Verknüpfung; d.h. der Wahrheitswert BEIDER teile muss analysiert werden um den Wahrheitswert des Ganzen zu bestimmen.
Wegen "Eine ODER-Verknüpfung ist WAHR, wenn ein Teil WAHR ist".
Heißt also weiter: "Auch wenn, der erste Teil FALSCH ist, muss man gucken, wie es mit dem zweiten Teil aussieht.

Im Gegensatz die UND-Verknüpfung.
Wegen "Eine UND-Verknüpfung ist WAHR, wenn beide Teile WAHR sind", kann man schon nach der Analyse des ersten Teils abbrechen, wenn dieser FALSCH ist. 
Das wird nicht mehr WAHR.

Zu Deiner Validierungsidee
G01Q01_Y001 !="Y" OR Q02New_Y001_X002 <= Q02New_Y001_X001
Auch wenn G01Q01_Y001 nicht gewählt wurde, wird der zweite Teil analysiert; diese Werte sind aber gar nicht definiert, und damit ist das Gesamtergebnis FALSCH.
​​​​​​
Du könntest jetzt ein UND daraus machen mit "=='Y'.

Aber wie Du vielleicht inzwischen im vorigen post gesehen hast, wird hier der Rückgriff auf die erste Frage nicht benötigt.
Denn es gibt ja NAOK
[url] manual.limesurvey.org/ExpressionScript_-...ion/en#Usage_of_NAOK [/url]
Dies ist immer dann zu benutzen, wenn die Gefahr besteht, dass Werte, die in eine Berechnung eingehen, nicht definiert sind.
Zum Beispiel beim Summieren einer Itembatterie (IB), die keine Pflichtfrage ist.
{sum(that.IB)} würde - falls einer der Werte fehlt - ein schlichtes, trauriges NaN (Not a Number) ergeben, {sum(that.IB.NAOK)} hingegen würde die vorhandenen Werte summieren.

So auch hier:
Es genügt
Q02New_Y001_X002.NAOK <= Q02New_Y001_X001.NAOK
Durch NAOK sind beide definiert und durch den Vergleich auf Gleichheit ist dies auch WAHR


Eine kleine Nebenbemerkung:
Streng genommen muss es "darunter Teilzeit" heißen.
Um "davon" zu benutzen, muss die gesamte Klasseneinteilung erscheinen, also "davon Vollzeit", "davon Teilzeit", oder "davon Männer", "davon Frauen", "davon Diverse", "davon Personen ohne Eintrag im Geburtsregister"
Heißt, die Summe der "davon"-Teile muss die Gesamtzahl ergeben

Falls dies nicht der Fall ist, ist "darunter" anzuwenden.
Siehe auch das Glossar des Statistischen Bundesamtes
[url] statistik.arbeitsagentur.de/DE/Statische...blob=publicationFile [/url]

Davon:
Der Begriff „davon” bezeichnet Teilmengen einer Gesamtsumme, wobei die jeweiligen Teilmengen in der Addition genau die Gesamtsumme ergeben (Bsp.: Arbeitslose, davon: „Deutsche“, „Ausländer“ und „ohne Angabe zur Staatsangehörigkeit“).

Darunter:
Der Begriff „darunter” gibt eine oder mehrere Teilmengen wieder, ohne dass alle Teilsummen exakt die Gesamtsumme ergeben (Bsp.: Arbeitslose, darunter: Ausländer).


Das aber wirklich nur ganz nebenbei. Ich war auch etwas erstaunt, als mir ein Auftraggeber im Ministerium dies erklärte. Und seitdem vergesse ich es nie mehr.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 8 months 1 week ago by Joffm.

Please Log in to join the conversation.

Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose