Welcome to the LimeSurvey Community Forum

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

Teilfragen-Validierung

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
1 week 4 hours ago #270998 by Gelimed
Teilfragen-Validierung was created by Gelimed
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: 6.14.3
Eigener Server oder LimeSurvey-Cloud: Cloud
Genutzte Designvorlage: eigene
==================
Hallo liebe Helfer,

ich bräuchte mal wieder Hilfe bei der Teilfragen-Validierung, Export hänge ich an.
Problem:
Die Eingabe in Frage "Öffnungszeiten" - 2. Frage der 2. Gruppe, wird nur in Abhängigkeit der Antworten auf die 1. Frage eingeblendet und die Teilfragen werden gefiltert eingeblendet - sollte so erfolgen, dass pro Zeile mindestens für den Vormittag ODER für den Nachmittag Werte eingetragen werden müssen. Das ist mir nicht mal für die erste Zeile gelungen, siehe fehlerhafte Gleichung im Bereich "Teilfragen-Validierungsgleichung":

if((Q03_SQ01.NAOK=='AO03'),
((!is_empty(Q04_Y01_X01.NAOK) AND !is_empty(Q04_Y01_X02.NAOK)) OR (!is_empty(Q04_Y01_X03.NAOK) AND !is_empty(Q04_Y01_X04.NAOK))),
(if((Q03_SQ01.NAOK=='AO04'),
((!is_empty(Q04_Y01_X01.NAOK) AND !is_empty(Q04_Y01_X02.NAOK)) OR (!is_empty(Q04_Y01_X03.NAOK) AND !is_empty(Q04_Y01_X04.NAOK))),"")))

Ich freue mich, wenn jemand helfen kann.

Viele Grüße,
Niklas

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 week 2 hours ago #271006 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
Ich lese es gerade am Badesee und denke "Kann man sich nicht mal von diesen default  Antwortoptionen "AO01", "AO02", ... "trennen.

Gut, der Fehler liegt am IF.
Damit bekommst Du keinen lohischen Term, der wahr oder falsch ist.
Muss sein:
Q3=="AO03" and der Kram von Q4
and
Q3=="AO04" and der Kram von Q4.

Das war "aus der Lameng".
Zuhause schaue ich genau.

Bis dann
Joffm 

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

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 days 12 hours ago #271010 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
So, ich habe einmal etwas herumgedacht.
Ich würde anders vorgehen, nämlich:
1. Berechne aus Q03 die Anzahl der Zeilen in Q04, (numerisch codiert)
In einer Gleichung zwischen den Fragen; dann muss man nur einmal rechnen.
{sum(if(countif("3",that.Q03.NAOK)>0,1,0),countif("4",that.Q03.NAOK))}

2. Codiere Vormittag und Nachmittag unterschiedlich, z.B. V1, V2 und N1, N2.
Damit kann man "self", insbesondere zusammen mit ".sq" gut nutzen.

3. Validierung: 
Stelle sicher, dass es NUR Pärchen gibt und die Summe der Pärchen "V1,V2", "N1,N2" gleich der berechneten Zellenzahl ist.
Dabei wird ignoriert, ob es ein oder zwei Pärchen pro Zeile gibt.

Dann müsstest Du noch zusätzlich testen, dass Schließung nicht vor Öffnung, dass überhaupt sinnvolle Zeiten eingetragen werden.

Joffm

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

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 days 3 hours ago - 6 days 3 hours ago #271022 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
Hallo,
ich könnte mir auch so etwas vorstellen.
Zugegeben, ich halte deinen Ansatz für ein wenig kompliziert für den Teilnehmer.
Gerade, was die Unterscheidung von "einheitliche" - wo ich aber doch alle anklicken muss - und "nicht-einheitliche".
Du siehst ja selbst, dass die Erklärung gut verstanden werden muss.




Du siehst: Wenn geschlossen oder Terminvereinbarung werden die Zeitfelder auf "disabled" gesetzt

Codierung der X-Achse
 
Benummerung des Dropdowns.
Code:
    $('.answer-item.answer_cell_X1', thisQuestion).addClass('with-select').append('<select class="inserted-select form-control list-question-select">\
            <option value="">... bitte auswählen &amp;#9660;</option>\
            <option value="3">geschlossen</option>\
            <option value="2">geöffnet - nur mit Terminvereinbarung -</option>\
            <option value="1">geöffnet</option>\
    </select>');  


Dann wäre eine mögliche Validierung: (Zeilenumbrüche zur Verdeutlichung)
Code:
((self.sq_Y01_X1>1) OR (self.sq_Y01_X1==1 and (count(self.sq_Y01_V)==2 OR count(self.sq_Y01_N)==2) and count(self.sq_Y01_V,self.sq_Y01_N)!=3)) AND
((self.sq_Y02_X1>1) OR (self.sq_Y02_X1==1 and (count(self.sq_Y02_V)==2 OR count(self.sq_Y02_N)==2) and count(self.sq_Y02_V,self.sq_Y02_N)!=3)) AND
((self.sq_Y03_X1>1) OR (self.sq_Y03_X1==1 and (count(self.sq_Y03_V)==2 OR count(self.sq_Y03_N)==2) and count(self.sq_Y03_V,self.sq_Y03_N)!=3)) AND
 
... hier geht es dann weiter bis Y06


Wie Du im Bild siehst habe ich 
  • eine Inputmaske eingebaut (mit der Bibliothek von Igor Escobar)
  • die Spaltenbreiten  geändert.

Was bleibt?
  • Validierung auf vernünftige Eingaben
  • Evtl. getrennte Fehlermeldungen:
    a. Bitte geben Sie in jeder Zeile den Status an!
    b. Eben der Hinweis, dass immer Von-Zeit und Bis-Zeit angegeben werden müssen

Und, was eben nicht zu vermeiden ist: Man hat den anfänglichen Fehler; nämlich, wenn alles leer ist.

Bis dann
Joffm
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 6 days 3 hours ago by Joffm.
The following user(s) said Thank You: Gelimed

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 days 12 hours ago #271035 by Gelimed
Replied by Gelimed on topic Teilfragen-Validierung
Wow, herzlichen Dank Joffm! Ich versuche mal, das so umzusetzen und melde mich wieder.
Viele Grüße aus Freiburg.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 days 10 hours ago #271036 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
Gut, dann schicke ich später das Script.
Es ist ja nur das Script aus dem Tutorial - ein wenig angepasst.

Joffm

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

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 days 7 hours ago #271042 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
Hier schicke ich Dir einmal das Gesamtwerk.
Es musste dann ja auch die Frage nach den Notfällen eine andere Bedingung bekommen, usw.


Wie Du sehen solltest, habe ich in der Inputmaske mit "Translation" gearbeitet, um zumindest sinnvolle Werte für Vormittag und Nachmittag zu erzwingen.
Mit der Bibliothek von Robin Herbots könnte man dies auch mit "Regex" machen.

So, der Rest ist jetzt Dir überlassen:
Weitere Validierung "Öffnung kleiner als Schließung"
Textanpassung
usw.

 

File Attachment:

File Name: limesurvey...72_J.lss
File Size:99 KB

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Gelimed

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 days 12 hours ago #271050 by Gelimed
Replied by Gelimed on topic Teilfragen-Validierung
Vielen Dank Joffm - damit hast du mir sehr weitergeholfen!
Ich muss zwar dieses Mal bei der Fassung mit den "einheitlichen Öffnungszeiten" bleiben - Vorgabe des auftraggebenden Amtes, da meistens dann doch einheitliche Zeiten gelten und das die Eingabe (evtl.) beschleunigt (...und solche "Anweisungen" zum richtigen Ausfüllen eines Formulars geben ja auch den Mitarbeitern das gute Gefühl, in der Verwaltung zu sitzen ;-)...) - aber ich hatte schon mehrere Umfragen, in denen mir deine Vorlage sehr geholfen hätte, und es werden weitere kommen.

Ich knobele gerade noch an der Validierung herum - musste erst einmal verstehen, wie genau self.sq funktioniert...ich bin halt bei weitem nicht so schnell und hell im Kopf wie du (darum auch nur Sachbearbeiter in der Verwaltung ;-)...
Ich finde das wirklich sehr bewundernswert, dazu noch das ganze tiefe Wissen...und das du uns das alles so in deiner Freizeit in Rekordzeit zur Verfügung stellst...
Danke!
Falls ich die Validierung auch mit deiner Anleitung nicht hinbekomme, würde ich mich nochmal melden...
Viele Grüße!

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 days 9 hours ago #271053 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
Gut, ich habe auch einmal geknobelt.
Um die Sache übersichtlicher zu machen, habe ich zwei Gleichungsfragen zwischen Q03 und Q04 geschoben.
Die erste (zcount) rechnet die angezeigte Zeilenzahl aus
{sum(if(countif("3",that.Q03.NAOK)>0,1,0),countif("4",that.Q03.NAOK))}

Die zweite (Gcount) summiert die gültig ausgrfüllten Zeilen
Es wird einfach geguckt, wie oft am Vormittag 2 Nennungen sind oder am Nachmittag UND  nicht 3 Nennungen  (1 wird ja schon vorher ausgeschlossen)
{sum(if((count(that.Q04.sq_Y01_V.NAOK)==2 or count(that.Q04.sq_Y01_N.NAOK)==2) and count(that.Q04.sq_Y01.NAOK)!=3,1,0), if((count(that.Q04.sq_Y02_V.NAOK)==2 or count(that.Q04.sq_Y02_N.NAOK)==2) and count(that.Q04.sq_Y02.NAOK)!=3,1,0), if((count(that.Q04.sq_Y03_V.NAOK)==2 or count(that.Q04.sq_Y03_N.NAOK)==2) and count(that.Q04.sq_Y03.NAOK)!=3,1,0), if((count(that.Q04.sq_Y04_V.NAOK)==2 or count(that.Q04.sq_Y04_N.NAOK)==2) and count(that.Q04.sq_Y04.NAOK)!=3,1,0), if((count(that.Q04.sq_Y05_V.NAOK)==2 or count(that.Q04.sq_Y05_N.NAOK)==2) and count(that.Q04.sq_Y05.NAOK)!=3,1,0), if((count(that.Q04.sq_Y06_V.NAOK)==2 or count(that.Q04.sq_Y06_N.NAOK)==2) and count(that.Q04.sq_Y06.NAOK)!=3,1,0), if((count(that.Q04.sq_Y07_V.NAOK)==2 or count(that.Q04.sq_Y07_N.NAOK)==2) and count(that.Q04.sq_Y07.NAOK)!=3,1,0))}

Dann lautet die Bedingung für Q04 einfach: zcount>0 (Es gibt anzuzeigende Zeilen)
Und die Validierung einfach Gcount==vcount (Es sind soviele gültig ausgefüllte Zeilen da, wie angezeigt werden)

Wie schon vorher wurde Q03 numerisch codiert (1,2,3,4)
Und in Q04 eben mit V1,V2,N1,N2

War für mich auch neu, dass man separate Gleichungsfragen auch zur Validierung heranziehen kann.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Gelimed

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 days 5 hours ago #271056 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
Noch ein kleiner Zusatz:
Natürlich kann man dies alles in die Fragenvalidierung hineinschreiben.
sum(if((count(that.Q04.sq_Y01_V.NAOK)==2 or count(that.Q04.sq_Y01_N.NAOK)==2) and count(that.Q04.sq_Y01.NAOK)!=3,1,0), if((count(that.Q04.sq_Y02_V.NAOK)==2 or count(that.Q04.sq_Y02_N.NAOK)==2) and count(that.Q04.sq_Y02.NAOK)!=3,1,0), if((count(that.Q04.sq_Y03_V.NAOK)==2 or count(that.Q04.sq_Y03_N.NAOK)==2) and count(that.Q04.sq_Y03.NAOK)!=3,1,0), if((count(that.Q04.sq_Y04_V.NAOK)==2 or count(that.Q04.sq_Y04_N.NAOK)==2) and count(that.Q04.sq_Y04.NAOK)!=3,1,0), if((count(that.Q04.sq_Y05_V.NAOK)==2 or count(that.Q04.sq_Y05_N.NAOK)==2) and count(that.Q04.sq_Y05.NAOK)!=3,1,0), if((count(that.Q04.sq_Y06_V.NAOK)==2 or count(that.Q04.sq_Y06_N.NAOK)==2) and count(that.Q04.sq_Y06.NAOK)!=3,1,0), if((count(that.Q04.sq_Y07_V.NAOK)==2 or count(that.Q04.sq_Y07_N.NAOK)==2) and count(that.Q04.sq_Y07.NAOK)!=3,1,0))==sum(if(countif("3",that.Q03.NAOK)>0,1,0),countif("4",that.Q03.NAOK))

Ich fand es einfach interessant, dass auch so etwas funktioniert; es könnten ja einmal deutlich kompliziertere Dinge gefragt sein.
Obwohl ich solche Gleichungsfragen natürlich in einem anderen Texteditor schreibe, ist mir auch dieses Fragen-Validier-Feld ein bisschen zu fitzelig und unübersichtlich.
Icvh bin schließlich schon alt.

Bis dann
Joffm


 

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

Please Log in to join the conversation.

  • Gelimed
  • Gelimed's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 days 5 hours ago #271058 by Gelimed
Replied by Gelimed on topic Teilfragen-Validierung
Nochmal extra danke, Joffm!
Ich muss gerade noch schnell eine andere Umfrage fertig machen und gehe das dann in aller Ruhe nächste Woche durch - ich will ja schließlich alles verstehen, um es dann auch anderweitig anwenden zu können!
Beim Überfliegen ist mir schonmal eine Frage gekommen: Was ist "vcount"?

Und die Validierung einfach Gcount==vcount (Es sind soviele gültig ausgefüllte Zeilen da, wie angezeigt werden)


Müsste es nicht heißen: Gcount==zcount?
...ja, das Feld ist wirklich nur zum Reinkopieren gut, ich schreibe auch immer erst in Notepad++...

Viele Grüße!

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 days 5 hours ago - 2 days 3 hours ago #271059 by Joffm
Replied by Joffm on topic Teilfragen-Validierung
Naja,
oh, da habe ich hier im Forum schon halbwegs verbessert.
"vcount" stammt noch vom Anfang, als ich Vormittag und Nachmittag getrennt berechnen wollte. Dann hätte es auch "ncount" gegeben.

In meiner Umfrage heißt es immer noch so, im Forum habe ich dann aber vom besseren "zcount" geschrieben; wenn auch nur teilweise.
Die Vergreisung schreitet halt fort.

Außerdem kannst Du hier auch mit "self" arbeiten, statt mit "that.Q04"

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 days 3 hours ago by Joffm.

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose