データベースで新しいフィールドを作成する際、4DではNULL値を空値にマッピングするかどうかを選択することができます。4D v19 R4以降、新規プロジェクトでは、4DはデフォルトでNULL値を空値にマッピングすることはなくなりました。
簡単に歴史を振り返ると、4D の古いバージョン(v11 が登場する以前)は、NULL をサポートしていませんでした。これはデータベース/ランゲージのどちらでも同様でした。
4D v11 以降、データベースは NULL をサポートし、4D の SQL 言語もNULL をサポートしますが、4D ランゲージではサポートされていませんでした。まさにこの理由から、デフォルトでは、新しく作成されたフィールドに対して、”ヌル値を空値にマップ “というオプションがあらかじめ選択されていました。これによって、4D言語でのコーディングが非常に簡単になりました。
現代に、そしてORDAに話を戻すと、話が別です。ORDAはNULLを完全にサポートしており、NULLの概念を取り込むことでコードには多くの新しい可能性が生まれます。
NULLとはデータの欠落を識別するために使用されます。NULL を空の値に対応させることは一見論理的に見えるかもしれませんが、実際は違います。たとえば、ユーザーが 0 を入力した場合と、何も入力しなかった場合では、大きな違いがあります。NULLは、何も値が入力されなかったことを示します。
ORDAはNULL値でも動作するように設計されています。例えば、.count()関数は、NULLでない値を持つエンティティセレクション内のエンティティの数を返します。ORDAでは、NULLをNULLのまま扱うことで、空の値へのマッピングを避ける方がはるかに良い方法です。
例えば、詳細データに携帯電話番号を入力した顧客の数を数える必要がある場合、テーブルの「mobile」フィールドがNULL値をサポートしていれば、以下のように記述するだけです。
$count:=ds.Users.all().count("mobile")
NULL 値を空値にマッピングする必要がある場合は、フィールドのプロパティにあるヌル値を空値にマップ オプションを選択することで引き続き使用することもできます。

ORDAが4Dで作業する標準的な方法になったため、このオプションのデフォルト値を変更するべき時が来た、と言えます。4D v19 R4で新規プロジェクトを作成すると、新しく作成されたフィールドには、デフォルトではこのオプションが設定されなくなります – もちろん、必要であれば、また有効に戻すこともできます!
Comments are not currently available for this post.