Microsoft Access Club >AccessTips >このページ >次頁 < 前項  サイト内検索


Null値についての考察_テーブル設計:AccessTips059



Nullとは? の問いに中々正確には答えられません。しかし、「テーブルフィールドに値が入っていない空の状態」と覚えておかれても誤りではありません。

テーブルを作成する時に、最も厄介で注意しなければならないのは、このNull値の取扱いです。Nullは"ヌル"とも"ナル"とも発音します。今、ピンとこない方はいずれこの問題で悩む事になるでしょう。ささ、今から手を打ってい きましょう。

テーブルフィールドに値を入力しないままレコードを保存すると、そのフィールドは自動的にNull値を持ったフィールドとなります。

留意点

よく皆さんが間違うのが、テーブルにデータ入力を行うとき時、つまりデータシートで入力する場合のような時です(下記図)。

一番下にオートナンバーが表示されているレコードがあります。この場合は、Nullでありません。

 

この場合は、単にデータが未入力であってレコード自体が未だ存在していない状態です。上図で言うと、3行目の商品名を入力するフィールドが空白となっています。これがNullの状態です。

  • ""が入力されている場合もありますので、絶対 Null値 だとはいえませんが…。この事については、後述します。

テーブルフィールド定義

テーブルフィールド定義を大別しますと、文字列と数値型とあります。ここでちょっとまとめてみましょう。

文字列

文字列フィールドでは、何も入力されていない状態を2種類に分類できます。

  1. ""
  2. Null

フィールドを見ると全く区別できません。Null値が問題になるのなら、じゃ、「何か文字を入力しておけばいいんじゃないか」と皆さん考えると思います。しかし、データ収集には 空白 を必要とする場合が必ずあります。

以下に、その場合のテクニックを説明しますので、次回テーブル作成時にでもご利用下さい。

  • 上記図は、文字列フィールドのプロパティです。どうしてもフィールドを空白にしなければならないことがある場合には、 既定値に長さ0の文字列("")を設定します。これは空白の文字列という意味です。Nullとは違います。
  • 次に、値要求プロパティをいいえ、空文字列の許可プロパティをはいに設定します。 これで、フィールドに何も入力されていない場合でも、Null値ではなく長さ0の文字列("")となります。
数値

次に、数値型フィールドを取り上げましょう。

  • 数値型では、空白の文字列は入力できません。替わりに 0 と Null の取扱いがクローズアップされます。 これらが混在するテーブルフィールドの 平均 や 個数 を求める場合、正確な値を求める事ができません。
  • AccessではNullを持つフィールドが1つでもある場合で、 これらの合計を求める時には、そのフィールドを計算から除外します。 つまり、計算の基礎数として除外するんです。 このため、クエリやフォーム上のテキストボックスで 合計を求める場合は好都合なんですが…。

留意事項
  1. よって、この数値型においても極力Nullを避けなければいけません。この場合は、テーブルのフィールドプロパティを下記のようにして下さい。
  2. 既に、テーブルフィールドに Null が存在している場合は、下記のように Null を 0 に変換する関数(NZ関数)を利用します。

サンプル

サンプルとして、下記のようなテーブルを想定します。

  1. このテーブルを元に帳票形式のフォームを作成します。
  2. フォームフッターにテキストボックスを新規作成します。
  3. このテキストボックスに請求額の平均値を表示させます。
  4. テキストボックスのコントロールソースに =Avg([請求額]) と記述します。
  5. 正しい答えは20000ですが、今回の場合は60000が表示されます。
ID 納品日 取引先名 商品名 請求額
1 00/12/1 Akira商事 冷蔵庫  
2 00/12/5 コーポレーションAkira ファンヒーター 60000
3 01/1/4 コーポレーションAkira カラーテレビ  
4 01/1/12 Akira商事 カラーテレビ  
5 01/1/12 Akira商事   60000
6 01/1/4 港証券販売コーポレーショ ファンヒーター  
  1. コントロールソースに記述した =Avg([請求額]) を =Avg(NZ([請求額])) と書き換えます。
  2. 正しい値である20000が表示されます。
NZ関数

NZ関数は、Nullを0に変換するAccessの組み込み関数です。計算においては、この関数を用いることで、Nullの存在を気にしなくても よくなります。

いろいろと問題を起こすNull 。VBAでもNull対策が大事です。次回は、VBAでNullに関することを取り上げる予定です。では…。

 2001/08/19

ページの先頭へ 前ページへ戻る

 


Null値についての考察_テーブル設計:AccessTips059


 

-Microsoft Access Club-

アダルト・ゲーム配信可能なPLESKパネル付属の専用・共有レンタルサーバーを提供しています。
アダルトやゲーム配信が可能です。
全専用/共有レンタルサーバーにPLESKパネルをインストール済み。
10年以上の実績を引っ提げて支援します。