- Posts: 27
- Thank you received: 0
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
- Topic Author
- Offline
- Junior Member
Less
More
1 year 1 month ago #241223
by antepante1
Code für maximale Summe numerischer Antworten geht nicht was created 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:)
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11637
- Thank you received: 2737
1 year 1 month ago #241227
by holch
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
Replied by holch on topic Code für maximale Summe numerischer Antworten geht nicht
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.
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 11637
- Thank you received: 2737
1 year 1 month ago - 1 year 1 month ago #241228
by holch
I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.
Replied by holch on topic Code für maximale Summe numerischer Antworten geht nicht
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.
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12881
- Thank you received: 3965
1 year 1 month ago #241232
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Code für maximale Summe numerischer Antworten geht nicht
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
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
- Topic Author
- Offline
- Junior Member
Less
More
- Posts: 27
- Thank you received: 0
1 year 1 month ago #241456
by antepante1
Replied by antepante1 on topic Code für maximale Summe numerischer Antworten geht nicht
ich hoffe die Datei passt so.. ich verstehe es leider nicht
Please Log in to join the conversation.
- antepante1
- Topic Author
- Offline
- Junior Member
Less
More
- Posts: 27
- Thank you received: 0
1 year 1 month ago #241458
by antepante1
Replied by antepante1 on topic Code für maximale Summe numerischer Antworten geht nicht
ich hoffe die Datei passt so.. ich verstehe es leider nicht
Please Log in to join the conversation.
- Joffm
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12881
- Thank you received: 3965
1 year 1 month ago #241470
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Code für maximale Summe numerischer Antworten geht nicht
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
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
- Topic Author
- Offline
- Junior Member
Less
More
- Posts: 27
- Thank you received: 0
1 year 3 weeks ago #241748
by antepante1
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
Replied by antepante1 on topic Code für maximale Summe numerischer Antworten geht nicht
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
- Offline
- LimeSurvey Community Team
Less
More
- Posts: 12881
- Thank you received: 3965
1 year 3 weeks ago #241755
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Code für maximale Summe numerischer Antworten geht nicht
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
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
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
Die Basics muss man sich halt "draufschaffen".aber ich bin absolut neu hier und ich versteh das ganze drum herum nicht
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