Quando si crea un nuovo campo nel database, 4D consente di scegliere se mappare o meno il valore NULL a valori vuoti. A partire da 4D v19 R4, nei nuovi progetti, 4D non mapperà più per default il valore NULL a un valore vuoto.
Breve riepilogo della storia: le versioni precedenti di 4D (prima dell’introduzione di 4D v11) non supportavano il valore NULL. Né nel database né nel linguaggio.
A partire dalla versione 4D v11, i database supportavano il NULL, così come il linguaggio SQL di 4D, ma non il linguaggio 4D. Per questo motivo, per impostazione predefinita, l’opzione “mappa valore NULL a valori vuoti” era preselezionata per i campi appena creati. In questo modo la codifica con il linguaggio di 4D era molto più semplice.
Tornando ai giorni nostri, con ORDA, la storia è diversa. ORDA conosce perfettamente il concetto di NULL e il suo utilizzo apre molte possibilità nel codice.
NULL viene utilizzato per contrassegnare i dati assenti. Anche se la corrispondenza tra NULL e un valore vuoto può sembrare logica, in realtà non è la stessa cosa. Ad esempio, se un utente inserisce uno 0 o non ha mai inserito nulla, la differenza potrebbe essere notevole! NULL indica che non è stato inserito alcun valore.
ORDA è stato progettato per lavorare con i valori NULL. Ad esempio, la funzione .count() restituisce il numero di entità nella selezione di entità con un valore non nullo. Con ORDA è molto meglio mantenere il supporto di NULL, evitando così di mapparlo su un valore vuoto.
Ad esempio, se si deve contare quanti clienti hanno inserito un numero di cellulare nella loro descrizione, se il campo “mobile” della tabella supporta il valore Null, basta scrivere:
$count:=ds.Users.all().count("mobile")
Ogni volta che è necessario mappare un valore NULL a un valore vuoto, è possibile utilizzare l’opzione Mappa valori NULL a valori vuoti nelle proprietà del campo:
Poiché ORDA è diventato il modo standard di lavorare con 4D, è giunto il momento di modificare il valore predefinito di questa opzione. All’avvio di un progetto con 4D v19 R4, questa opzione non è più impostata di default per i campi appena creati, ma naturalmente è ancora possibile attivarla se necessario!