Welcome to the LimeSurvey Community Forum

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

Code für maximale Summe numerischer Antworten geht nicht

  • antepante1
  • antepante1's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 year 1 month ago #241223 by antepante1
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version:3.28.42+221213
Eigener Server oder LimeSurvey-Cloud:Eigener Serve
Genutzte Designvorlage:bootswatch_BL
==================
Hallo liebes Forum, 

dank vorheriger Beiträge konnt ich bereits den Code für mein Problem bekommen, leider funktioniert er aber nicht..

Es handelt sich um eine Matrix Zahlen frage, bei der die Summe der Prozente nicht mehr als 100 % sein dürfen.

Dafür hab ich folgendes eingegeben -> siehe File.

Wieso geht es dann doch nicht? Kann mir da vielleicht jemand weiterhelfen?

liebe grüße
anna:)   
 

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 1 month ago #241227 by holch
Was genau "funktioniert nicht"? Was passiert denn aktuell?

Und bei sowas ist es immer sinnvol, eine LSS des Problems zur Verfügung zu stellen.

Einfach die Umfrage kopieren, alles rauslöschen was nicht relevant ist und dann die kopierte Umfrage als LSS exportieren und hier hochladen.

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

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 1 month ago - 1 year 1 month ago #241228 by holch
Abgesehen davon, sollte das wohl eher nicht in der Relevanz-Gleichung stehen. Die definiert ja nur, ob eine Frage angezeigt wird oder nicht.

Das muss wenn überhaupt in die Validierung der Frage. Mit diesem Code in der Relevanz-Gleichung wird die Frage vermutlich gar nicht angezeigt.

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

Last edit: 1 year 1 month ago by holch.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 1 month ago #241232 by Joffm
Abgesehen davon, dass dies nicht in die Relevanzgleichung gehört, ist m.E. auch der Term an sich falsch.
Du siehst ja, was nach Expandierung herauskommt.
Bis auf OE2_SQ001_SQ001 wird jede Zelle zweimal in die Summe aufgenommen.
Soll heißen, Du hast das Prinzip von "self" und "that" noch nicht verstanden.
Wen Du schreibst "self.sq_SQ001" werden alle Zellen, die irgendwo "SQ001" enthalten einbezogen, also "OE2_SQ001_SQ001", "OE2_SQ002_SQ001", "OE2_SQ003_SQ001", aber auch "OE2_SQ001_SQ002", "OE2_SQ001_SQ003". Und dann kommt Blödsinn heraus.

Wenn Du beide Achsen nach demselben Schema kodierst, wirst Du "self" nicht anwenden können
Bei solchen Dingen sollte man sich vorher überlegen, was geschehen soll und entsprechend kodieren.
Ich nehme gerne "Y001", "Y002",... für die y-Achse, "X001", "X002", ... für die x-Achse.
Um dann also die erste Spalte zu summieren, genügt "sum(self.sq_X001)"
Entsprechend für die zweite Zeile: "sum(self.sq_Y002)"

Wie @holch, schicke den lss Export.

Joffm

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

Please Log in to join the conversation.

  • antepante1
  • antepante1's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 year 1 month ago #241456 by antepante1
ich hoffe die Datei passt so.. ich verstehe es leider nicht

Please Log in to join the conversation.

  • antepante1
  • antepante1's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 year 1 month ago #241458 by antepante1
 

File Attachment:

File Name: limesurvey...3-14.lss
File Size:34 KB
ich hoffe die Datei passt so.. ich verstehe es leider nicht

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 1 month ago #241470 by Joffm
Naja, da fehlt aber noch eine Menge Basiswissen.
Z.B. Matrixfilter
Wie im Handbuch steht, kannst Du keine Einfachantwortfrage benutzen
[url] manual.limesurvey.org/Question_type_-_Ar...r_.28array_filter.29 [/url]
Ebenfalls steht dort, dass die Antwort-/Teilfragencodes identisch sein müssen.

Jetzt das nächste: Du musst ausschließen, dass in den 5 Dropdowns keine Doppelnennungen sind.
Geht natürlich.
Wenn alle fünf auf jeden Fall ausgefüllt sein müssen, mit
count(OEKON01,OEKON02,OEKON03,OEKON04,OEKON05)==5 AND unique(OEKON01,OEKON02,OEKON03,OEKON04,OEKON05) 
Sonst wird es komplizierter.

Daher würde ich dies einfach als Mehrfachnennung anlegen. Dann klappt nämlich auch der Matrixfilter.

Wenn Du es aber so machen willt, gut.
Dann sollen Deine Teilfragen aber wohl je nach Wahl benannt sein.
 - Wozu dient eigentlich die Spalte Bezeichnung? - 
Und dazu dient die Property ".shown"
[url] manual.limesurvey.org/ExpressionScript_-...#Access_to_variables [/url]
also {OEKON001.shown}, usw.
 

Und die Validierung könnte so aussehen (Du hast natürlich wieder beide Achsen gleich kodiert), wenn Du die y-Achse mit Y001, Y002 und die x-Achse mit X001, X002 kodierst.
sum(self.sq_X002)==100 and sum(self.sq_X003)==100 and sum(self.sq_X004)==100

Du siehst, ich habe X001 weggelassen, da dies ja diese "Bezeichnungs"-Spalte ist.

Die Unschönheit hierbei ist, dass die Frage mit einer Fehlermeldung startet; klar, direkt am Anfang sing ja in keiner Spalte 100% verteilt
Kann man - wenn man denn will - abfangen, indem man zunächst guckt, ob alle Zellen gefüllt sind.
Also vielleicht so:
(count(self)<20) or (sum(self.sq_X002)==100 and sum(self.sq_X003)==100 and sum(self.sq_X004)==100)

Aber das willst Du ja - laut Deiner anderen Frage nicht unbedingt erzwingen.

Mehr kann ich im Moment nicht dazu sagen.

Joffm

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

Please Log in to join the conversation.

  • antepante1
  • antepante1's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 year 3 weeks ago #241748 by antepante1
 

File Attachment:

File Name: limesurvey...9661.lss
File Size:23 KB

File Attachment:

File Name: limesurvey...9661.lss
File Size:23 KB


okay, ich habe es jetzt versucht umzusetzen, aber ich habe immer noch was falsch... 
Das Problem ist, ich weiß dass vieles für dich banal klingt, aber ich bin absolut neu hier und ich versteh das ganze drum herum nicht - also danke für deine Nachsicht!!

lg

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 3 weeks ago #241755 by Joffm
Naja, der Fehler ist einfach, dass Du Deine Validierung in das falsche Feld geschrieben hast.
Dieses Feld unter "Allgemeine Optionen" dient zur Validierung mittels "Regulärer Ausdrücke". Hier wird nur die RegEx eingetragen und es ist nicht notwendig, mit der Funktion "regexMatch()" zu arbeiten.
Wie hier im Handbuch beschrieben.
[url] manual.limesurvey.org/Question_type_-_Ar...28preg_validation.29 [/url]

Deine Validierung gehört in "Frage-Validierungsgleichung" unter "Logik". Und dort kannst Du dann gleich einen entsprechenden Tip einfügen.
Dies findest Du hier:
[url] manual.limesurvey.org/Question_type_-_Ar...28em_validation_q.29 [/url]
Dann sieht es auch gleich besser aus. Natürlich solltest Du ".NAOK" nicht vergessen.
 

Der Nachteil einer/jeder solchen Validierung ist natürlich, dass die Frage sofort mit einem Fehler startet, da ja keine Summe =100 ist.
 
Könnte man umgehen, indem man zusätzlich sagt, dass die Anzahl der Nennungen pro Spalte gleich der Zeilenzahl sein muss.
Dazu wäre die Funktion "count()" geeignet.
Irgendwie so: Entweder ist count(self...)!=Zeilenzahl ODER sum(self...)==100

Da Du aber einen Matrixfilter benutzt, ist die Zeilenzahl ja variabel; da muss man dann schauen, d.h. die Zeilenzahl aus der vorherigen Frage errechnen; geht dann wohl mit count(that.sq...)
Die Frage, die den Filter liefert, war aber leider nicht in der lss. 

Dann kommt aber der nächste Problemfall: Die Frage ist anscheinend nicht als Pflichtfrage angelegt.
Damit geht also diese letzte Idee wieder "in die Hose"

Eine andere Lösung wäre natürlich die Matrix(Texte) mit den entsprechenden Einstellungen (nur Zahlen, Zeige Summen)
 
Die generelle Validierung ist identisch.

Und 

aber ich bin absolut neu hier und ich versteh das ganze drum herum nicht

Die Basics muss man sich halt "draufschaffen".
Also Handbuch zumindest querlesen.
Es gibt von unserem Partner Paul Borsdorf sehr, sehr viele Youtube-Videos, alle nur 2-4 Minuten lang. Einfach nach dem Namen dort suchen.
Es gibt die Beispielstudien hier zum Herunterladen und Importieren
[url] manual.limesurvey.org/ExpressionScript_sample_surveys/en [/url]
und auch in der Demo-Installation
[url] demo.limesurvey.org/index.php?r=admin [/url]

Joffm
 

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

Please Log in to join the conversation.

Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose