Ist es überhaupt in Ordnung selbst Seriennummern anzulegen, um diese in den Zufallsgenerator für die Vergabe eines Codes einzuspeisen
Sie arbeiten ja mit Serienmails. Dabei wird jedem Eintrag in der Adressliste automatisch eine Personenkennung zugewiesen, die in allen seinen Interviews als "SERIAL" vermerkt wird. Sie legen also gar keine Seriennummern an - das macht die Serienmail-Funktion.
eigentlich wollte ich noch folgenden Befehl benutzen, damit eine Fehlermeldung angezeigt wird, wenn die Urne leer ist.
Ich würde Ihnen auf jeden Fall so ein "Sicherheitsnetz" empfehlen. Man kann ja nie wissen. Natürlich sollten Sie trotzdem mehr als genug Codes in den Zufallsgenerator legen.
hier zeigt der Funktionstest an :
statistic('count', 'AB04_01', caseSerial()) = 0 (integer)
Das bedeutet, dass mit der aktuellen Seriennummer noch kein einziger (FINISHED=1) Fall im Datensatz liegt. Starten Sie mal einen Fragebogen im Debugging-Modus und direkt nach dem Start hängen Sie oben in der Adresszeile des Browsers eine Seriennummer an, also ...&s=Test001, dann mit der EIngabeteste bestätigen und im Fragebogen auf "Weiter" klicken.
Wenn Sie das korrekt gemacht haben, sollten unter "Erhobene Daten" -> "Daten ansehen" in der Variable "SERIAL" der Code "Test001" angezeigt werden. Füllen Sie den Fragebogen komplett aus, damit er in der statistic()-Zählung erscheint.
Dann rufen Sie den Fragebogen mit dem statistic()
nochmal auf und hängen auch dort die Seriennummer an den Link an. Nochmal mit der Eingabetaste bestätigen ... und wenn alles korrekt läuft sollte dann angezeigt werden
statistic('count', 'AB04_01', caseSerial()) = 1 (integer)
Wenn hier nun die 1 steht (=es liegt ein Fall zu der Seriennummer vor), dann sollte es soweit passen. Wichtig ist, dass Sie das put() in jedem Ihrer Fragebögen machen, damit dieser in der statistic()-Funktion gezählt wird.
Ach ja, Vorsicht bitte mit diesem Code, den Sie oben gepostet haben:
if (statistic('count', 'AB04_01', caseSerial()) >= 5)
{question('AB06');}
{replace('%code%', 'AB06', 'response');
html('<p>Ihr Code ist: <strong>%code%</strong></p>');}
Ich formatiere das mal ein wenig anders:
if (statistic('count', 'AB04_01', caseSerial()) >= 5) {
question('AB06');
}
{
replace('%code%', 'AB06', 'response');
html('<p>Ihr Code ist: <strong>%code%</strong></p>');
}
Da steht kein else
zwischen der oberen und unteren Klammer. Das heißt: Der zweite Teil wird immer ausgeführt - unabhängig vom IF. Ich glaube, Sie möchten eigentlich das hier:
if (statistic('count', 'AB04_01', caseSerial()) >= 5) {
question('AB06');
replace('%code%', 'AB06', 'response');
html('<p>Ihr Code ist: <strong>%code%</strong></p>');
}