Gestire la compilazione automatica di variabili in CBS Blaise può avere effetti collaterali, se è attivo il pulsante Indietro 

Oggi abbiamo toccato con mano un interessante effetto collaterale relativo alla compilazione automatica di variabili in Blaise. La compilazione delle variabili resta attiva nella sessione, fintanto che il dato non viene salvato; qualora si scelga un percorso che preveda la compilazione automatica della variabile, poi si torni indietro e se ne scelga uno che preveda invece l’inserimento di un valore, verrà visualizzato il precedente valore (pre-compilato) nella maschera di inserimento. 

Supponiamo di avere un DATA MODEL semplificato definito come segue.

DATAMODEL TestMas

PRIMARY ID
FIELDS
ID : INTEGER[4]
A: INTEGER
B: INTEGER
C: INTEGER
D: INTEGER
E: INTEGER

RULES

A
B
IF B = 1 THEN
    C := 1
ELSE
    C
ENDIF

D
E
ENDMODEL

Eseguendo l’indagine si inserisca un ID casuale numerico, un numero random in A, 1 alla domanda B. Andando avanti non verrà mostrata la domanda C perché valorizzata automaticamente ad 1. Sarà mostrata invece la domanda D. Cliccando sul pulsante Indietro (associato all’azione PreviousAction nel layout), sarà mostrata la domanda B. Dopo aver inserito un valore diverso da 1 in B ed aver fatto click su Avanti, sarà mostrata la domanda C in modalità modifica, ma con il valore 1 già assegnato all’interno. L’effetto può essere un po’ fuorviante per un intervistatore CAPI, perché qualora non stia prestando la dovuta attenzione può andare avanti senza rendersi conto del valore inserito, semplicemente premendo il tasto INVIO. 

L’unico modo di prevenire questo effetto è l’introduzione di una variabile di appoggio. Il DATA MODEL risultante è il seguente.

DATAMODEL TestMas

PRIMARY ID
FIELDS
ID : INTEGER[4]
A: INTEGER
B: INTEGER
C: INTEGER

C_app: INTEGER
D: INTEGER
E: INTEGER

RULES

A
B
IF B = 1 THEN
    C := 1
ELSE
    C_app
    C := C_app
ENDIF

D
E
ENDMODEL

La considerazione generale che abbiamo tratto, è che in BLAISE, qualora sia attivo il pulsante indietro, non è buona prassi avere, per la stessa variabile, operazioni di assegnazione e di inserimento in differenti rami condizionali.