プロが教える店舗&オフィスのセキュリティ対策術

あるテーブル(UserLog)から、「LogOffTime」フィールドの値が空欄(Null)のデータを探す式ですが、

Access_97で・・・
DCount("*", "UserLog", "[LogoffTime] = Null")

・・・としていたのを、Access2000にしたら上手く動きません。
アレコレ試行錯誤して・・・

DCount("[UL_Id]", "[UserLog]", "[LogoffTime] is Null")

・・・だと上手く行くのですが、資料類を見ても「=」が使えるハズなんですけど、なぜダメなんでしょう?

A 回答 (2件)

Accessは2種類の空白の値を使って区別します。

空白値にはNull値(データが存在しないこと、またはデータが不定であることを示すために使用する値。)と
長さ0の文字列(文字を1つも含まない文字列。意図的にフィールドに値がないようにしていることを示すことができる。)がありますよね。
=Nullや<>Nullのようなこの状況ではTrue(真)と評価される式でもFalse(偽)になります。
Null値を含む式はすべて式自体がNull値となりFalse(偽)と評価されるためです。
2000以降はIsNull関数でNull値を厳密に?判定しているのでNullの判定はIsNull関数でやらなければだめであるという事だと思いますが。

この回答への補足

ありがとうございました。
Ac97とAc2000で、同じ条件式で試した処・・・

式                 Ac97 Ac2000
=IIf([xxx]=Null,"○","□")     ○  □
=IIf([xxx] Is Not Null,"□","○")  ○  ○
=IIf([xxx] Is Null,"○","□")    ○  ○

・・・の様な結果を示しました。

「[xxx]<>Null」と書いても「[xxx]Is Not Null」と
勝手に変換されてしまうので、やっぱり「=」が
クセモノなんでしょうかネェ?

Ac2000のHelpでも、そんな事明記されてなかった様な。。。

これを元に、書き換え初めます。。。
ありがとう御座いました!

補足日時:2005/09/09 10:01
    • good
    • 0

基本的に振る舞いが似ていても、ISと=の仕様は違います。



おそらく、原因はその辺かと思います
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A