–1 vote
in SoSci Survey (dt.) by s144040 (155 points)

Hallo
Ich will eine mehrwellige Befragung machen und dabei offene Textdaten vom ausgefüllten Fragebogen auf die nächste Befragung übermitteln. Dies mache ich über das Serienmail.

Am Schluss des Fragebogens speichere ich alle Werte ab, die ich brauche und öffne diese im neuen Fragebogen.
Mein Problem ist nun, dass einige offene Fragen nicht beantwortet werden und ich deswegen bei diesen Fragen einen Pseudowert eintragen will (zB "keine Angaben"). Ist dies möglich?

Wenn BP33_01 den Wert 1 hat, dann soll es bei der offenen Nennung BP43_01 die Angabe "keine Angaben" speichern.

leider hat as

if (value('BP33_01') == 1) {            
  value('BP43_01') == "keine Angaben";  %%diesen Wert soll es abspeichern
} else{
 question('BP43');    %% falls die Nummer 2 gegeben ist
 
}

Den Datensatz habe ich dann folgend abgespeichert:

$key = caseSerial();
$data = array(
  
  value('BP43_01', 'free'),
  value('BP44_01', 'free'),
  value('BP45_01', 'free'),
  value('BP49_01', 'free'),
  value('BP47_01', 'free'),
  value('BP48_01', 'free'),
  value('BP46_01', 'free'), 
 
);
dbSet($key, $data);

Leider hat es nicht funktioniert, beim nächsten Fragebogen konnten ich die Daten dann nicht hochladen.

Wie ist es möglich für eine nicht beantwortet offene Nennung (BP43_01) den Wert "keine Angaben" abzuspeichern? Damit ich dann einen vollständigen Datensatz abspeichern kann?

Ich hoffe, Sie können mir weiter helfen

1 Answer

0 votes
by SoSci Survey (330k points)

Das Überschreiben von Daten ist mittels put() möglich, wenn man es mit einem dritten Parameter explizit auch für nicht-interne Variablen erlaubt:

if (trim(value('BP33_01')) == '') {            
  put('BP43_01', 'keine Angaben', true);
}

Allerdings würde ich davon abraten und stattdessen erst beim Erstellen des Arrays die Anpassung vornehmen:

$data = array(
  value('BP43_01', 'free'),
  value('BP44_01', 'free'),
  value('BP45_01', 'free'),
  value('BP49_01', 'free'),
  value('BP47_01', 'free'),
  value('BP48_01', 'free'),
  value('BP46_01', 'free'), 
);
if (trim($data[0]) == '') {
  $data[0] = 'keine Angaben';
}

Das kann man dann auch gleich für alle Variablen recht bequem erledigen:

$data = array(
  value('BP43_01', 'free'),
  value('BP44_01', 'free'),
  value('BP45_01', 'free'),
  value('BP49_01', 'free'),
  value('BP47_01', 'free'),
  value('BP48_01', 'free'),
  value('BP46_01', 'free'), 
);
foreach ($data as $i => $value) {
  if (trim($value) == '') {
    $data[$i] = 'keine Angaben';
  }
}

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

...