0 votes
in SoSci Survey (dt.) by s168446 (175 points)

Hallo,
ich möchte in einer Befragung mit Multi-Level-Struktur mit einem Filter arbeiten und komme hier nicht weiter. Kurz zum Design:
Die Befragung erhebt Angaben zu Projekten, die die Vpn durchgeführt haben. Im Hauptfragebogen ‚Haupt‘ werden allgemeine Angaben und die Anzahl der Projekte (‚NA02_01‘) erhoben. Der Teilfragebogen ‚teil‘ enthält Fragen zum jeweiligen Projekt und soll und soll entsprechend der Anzahl der Projekte gestartet und entsprechend oft wiederholt werden. Dazu habe ich in ‚Haupt‘ folgendes geschrieben:

$anzahl = (int)value('NA02_01');
// Filter: Keine Anträge
if ($anzahl < 1) {
  goToPage('OUT');
}
if (count($anzahl) > 0) {
  $anzahl = loopPage($anzahl);
  // Teilfragebogen starten
multiLevelDown('teil', $anzahl);
}

Und in ‚teil‘ folgendes:

$anzahl = multiLevelData();
// Element im Teildatensatz speichern
put('IV01_01', $anzahl);

Das funktioniert soweit.
Nun soll aber zusätzlich entsprechend der Antwort auf Frage ‚SM02‘ aus dem Hauptfragebogen im Teilfragebogen eine Frage ausgetauscht werden (entweder ‚T105‘) oder (‚T114‘). Etwa so:

if (('SM02') ==7) {
question ('T114');
}
 else {
  question('T105');
}

Es gelingt mir nicht, die Werte aus 'SM02' in den Teilfragebogen zu übertragen.
Können Sie weiterhelfen? Welche Befehle müssen wo formuliert werden, damit die Werte aus 'SM02' auch im Teilfragebogen zur Verfügung stehen?
Herzlichen Dank vorab und viele Grüße

2 Answers

0 votes
by SoSci Survey (330k points)
selected by s168446
 
Best answer

Das funktioniert soweit.

Sie sollten dennoch die Variable $anzahl im Hauptfragebogen nicht für unterschiedliche Inhalte verwenden, also besser:

$projekt = loopPage($anzahl);
multiLevelDown('teil', $projekt);

Nun soll aber zusätzlich entsprechend der Antwort auf Frage ‚SM02‘ aus dem Hauptfragebogen im Teilfragebogen eine Frage ausgetauscht werden

Dann müssen Sie das SM02 einfach als zweiten Wert in multiLevelDown() übergeben. Das könnte z.B. so aussehen:

$projekt = loopPage($anzahl);
$filter = value('SM02');
multiLevelDown('teil', [
  'projekt' => $projekt,
  'filter' => $filter
]);

Hier werden die beiden Werte als Array übergeben. Auslesen würden Sie das dann wie folgt:

$data = multiLevelData();
put('IV01_01', $data['projekt']);
put('IV01_02', $data['filter']);
0 votes
by s168446 (175 points)

Herzlichen Dank für die schnelle Hilfe! Hat alles prima geklappt

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...