Cuando crea un nuevo campo en su base de datos, 4D le permite elegir si mapea el valor NULL a valores vacíos o no. A partir de 4D v19 R4, en los nuevos proyectos, 4D ya no asignará por defecto el valor NULL a un valor vacío.
Recapitulación rápida de la historia: las versiones más antiguas de 4D (antes de la introducción de 4D v11) no soportaban NULL. Ni en la base de datos ni en el lenguaje.
A partir de 4D v11, las bases de datos soportaban NULL, así como el lenguaje SQL de 4D, pero no el lenguaje 4D. Precisamente por esta razón, por defecto, la opción «mapear valor NULL a valores en blanco» estaba preseleccionada para los campos recién creados. Esto facilitaba la codificación con el lenguaje de 4D.
Volviendo a la actualidad, y con ORDA, la historia es diferente. ORDA es totalmente consciente de NULL y el uso del concepto de NULL abre un montón de posibilidades en su código.
NULLse utiliza para marcar datos ausentes. Aunque la asignación de NULL con un valor vacío puede parecer lógica, en realidad no es lo mismo. Por ejemplo, si un usuario ingresa un 0 o nunca ingresó nada, ¡podría ser una gran diferencia para usted! NULL le dice que nunca se introdujo ningún valor.
ORDA está diseñado para trabajar con valores NULL. Por ejemplo la función .count() devuelve el número de entidades en la selección de entidades con un valor no nulo. Con ORDA es una práctica mucho mejor mantener el soporte de NULL, y así evitar mapearlo a un valor vacío.
Por ejemplo, si necesita contar cuántos de sus clientes han introducido un número de teléfono móvil en su descripción, si el campo «móvil» de su tabla soporta el valor Null, simplemente escriba:
$count:=ds.Users.all().count("mobile")
Siempre que necesite asignar un valor NULL a un valor en blanco, puede utilizar la opción Asignar valores NULL a valores en blanco en las propiedades del campo:
Como ORDA se ha convertido en la forma estándar de trabajar con 4D, ha llegado el momento de cambiar el valor por defecto de esta opción. Al iniciar un proyecto con 4D v19 R4, esta opción ya no está establecida por defecto para los campos recién creados – pero por supuesto, aún puede activarla si es necesario.