#647 未入力データを計算しないかゼロとして計算するかの使い分け クエリ

Accessでは、データが未入力の状態は『Null(ヌル)値』という特殊な扱いになります。

フォームやレポートでその値をそのまま出力する際は、見た目は何もないので単なる空欄に過ぎませんが、クエリなどでその値を使って演算を行う場合は十分注意する必要があります。

たとえば、次のような条件で計算を行ったとします。
  • フィールドAの値: 2
  • フィールドBの値: 3
  • フィールドCの値: Null
  1. フィールドA + フィールドB の加算を行う
  2. フィールドA + フィールドB + フィールドC の加算を行う
  3. フィールドA × フィールドB の乗算を行う
  4. フィールドA × フィールドB × フィールドC の乗算を行う
この計算結果は次のようになります。
  1. 5
  2. Null
  3. 6
  4. Null

つまり、計算式の中にひとつでもNull値があると、他の値に関わらず答えは「Null」となります。空白のセルは「0」として計算してくれるExcelとはまったく異なります。


このようなケースにおいては、未入力データをどのように扱うが重要となります。

(1)Excelのようにゼロとして計算した方が都合のよい場合もあります

(2)しかし一方で”一部のデータが抜けているのに答えが出てはいけない”という場合もあるかもしれません


もちろんケースバイケースですが、それぞれの仕様に合わせて次のように対応します。
  • (1)のようにゼロとして計算させたい場合は、クエリであればその演算フィールドにおいて『NZ関数』を使います。
    例:NZ(フィールドA) + NZ(フィールドB)

  • (2)のように答えを空欄としたい場合には、上述のようにそのまま計算を行います。
    例:フィールドA + フィールドB

クエリのデザイン例:
計算結果1: Nz([データA]) + Nz([データB]) + Nz([データC])
計算結果2: [データA] + [データB] + [データC]

実行例:
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved