Quando cria um novo campo na sua base de dados, 4D permite-lhe escolher entre mapear o valor NULL para valores em branco ou não. A partir de 4D v19 R4, em novos projectos, 4D deixará, por defeito, de mapear o valor NULL para um valor em branco.
Recapitulação rápida do histórico: as versões mais antigas de 4D (antes de 4D v11 ser introduzido) não suportavam o valor NULL. Não na base de dados nem na língua.
Começando com 4D v11, as bases de dados suportavam NULL, bem como a linguagem SQL 4D, mas não a linguagem 4D. Por esta razão precisa, por defeito, a opção “mapear valor NULL para valores em branco” foi pré-seleccionada para campos recém-criados. Tornou a codificação com a linguagem 4D muito mais fácil.
De volta aos dias de hoje, e com ORDA, é uma história diferente. A ORDA está plenamente consciente do NULL e a utilização do conceito de NULL abre muitas possibilidades no seu código.
NULL é usado para marcar os dados ausentes. Mesmo que o mapeamento NULL com um valor vazio possa parecer lógico, não é realmente o mesmo. Por exemplo, se um utilizador introduzir um 0 ou nunca introduziu nada, pode ser uma grande diferença para si! NULL diz-lhe que nenhum valor foi alguma vez introduzido.
A ORDA foi concebida para trabalhar com valores NULL. Por exemplo, a função .count() devolve o número de entidades na selecção da entidade com um valor não-nulo. Com ORDA é uma prática muito melhor manter o suporte NULL, e assim evitar mapeá-lo para um valor vazio.
Por exemplo, se precisar de contar quantos dos seus clientes introduziram um número de telemóvel na sua descrição, se o campo “móvel” da sua tabela suportar um valor NULL, basta escrever:
$count:=ds.Users.all().count("mobile")
Sempre que precisar de mapear um valor NULL para um valor em branco, ainda pode usar a opção Mapear valores NULL para valores em branco nas propriedades do campo:
Como ORDA se tornou a forma padrão de trabalhar com 4D, é agora altura de alterar o valor por defeito para esta opção. Iniciando um projecto com 4D v19 R4, esta opção já não é definida por defeito para campos recém-criados – mas é claro, ainda pode activá-la se necessário!