プロが教えるわが家の防犯対策術!

以前組んだAccessVBA(ADPファイルにて使用)でのコードの中に、入力値のチェックとして

--------------------------
Dim value as String
If me!TextBoxA = "" then
'ここでテキスト未入力時の処理
Else
  ’テキストが入力されているのでここで正常な処理
value = me!TextBoxA.value
End If
---------------------------
という記述をしていました。

今でしたら、これに加えてIsNullや他の仕組みを併用するのですが、
今まで上のものでも問題なく使えていました。つまり、

 If me!TextBoxA = "" then 

だけで、テキストボックスの未入力をきちんと検出していました。

ところが、最近新しいPCを導入したところ、

 「Nullが不正です」

のメッセージが出るようになりました。
恐らくIf文で入力値の””が検出されず、Elseの部分で、Valueに代入しようとしたため、「Nullが不正」となったのだと思います。

本来はこちらの方が正しいと思うのですが、わからないのは今までなぜ
Nullが不正とならなかったのか、です。

因みに、問題なく使えていたPCの組み合わせとしては、

 ・XP(SP3) Office2010Pro(Access2010) 
 ・XP(SP3) Office2002Pro(Access2002) + AccessRuntime2007
 ・XP(SP3) Officeなし + AccessRuntime2010

 ・・・など、あらゆる組み合わせで10台ほど、問題なく動いていました。
 (OSはすべて32Bit.エデイションはProやHomeなど混在)

そして、問題となったPCは
 ・XP(SP3)Pro Office2010Pro(Access2010)

です。しかも、購入した直後は問題なかったものの、つい先日急にダメになったとの事でした。

何かきっかけとなった事はなかったか聞いてみましたが、心当たりはないとの事。

また、ネットワーク上にある同一ファイルをそれぞれのPCで個別に開いてみても、
やはり、Nullを検出するのは今回の新しいPCだけです。

何が原因なのかが気になって仕方ありません。

このような違いが起こる要因としてどのようなことが考えられるでしょうか。

A 回答 (1件)

問題の回答は以下のURLに書かれています。



「No909.NullとIsNullの違いとは・・・・?」
http://www.accessclub.jp/bbs5/0004/vba909.html


Null と "" は違う判定結果になります。 もしNULL判定も含むよぅにしたいなら NZ() 関数をお勧めいたします。
もし、何も入力されていないことをチェックするのであれば 以下のようにすればいいでしょう。

IF len(NZ(調べたい値)) = 0 then ' ==> 文字列が長さが0 かつNULLであれば空文字列 "" に変換します。

処理
end if

とすれば完璧です。

参考URL:http://www.accessclub.jp/bbs5/0004/vba909.html
    • good
    • 0
この回答へのお礼

回答をありがとうございました。リンク先で知った「Null 値を含む式はすべて式自体が Null 値となり」という部分は新たな発見でした。

お礼日時:2012/01/19 17:24

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

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