こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access Nullの評価について

お世話になります。
Access2010

フォームを作成しました。
「登録」ボタンが押されたら、フォーム上の値の変更有無をチェックし
変更がなければ何もせず、変更があった場合のみ該当レコードを更新
します。

そこで質問ですが、
 If Me.AAA = Me.BK_AAA And Me.BBB = Me.BK_BBB And Me.CCC = Me.BK_CCC Then
   '変更が無ければ何もしない
 Else
   該当レコードにAAA~CCCの値を上書き
 End If
としておりますが、例えばMe.CCCとMe.BK_CCCにそれぞれNullが
入っている場合、Elseになってしまいます。
※M.BK_CCCは変更前の値が入っている

恐らく、
 If Me.AAA & "@" = Me.BK_AAA & "@" ・・・
のように文字をくっつけて評価させればよいかと思うのですが、
そもそもNullの場合は、イコールで評価出来ないのでしょうか。

ご教示の程、宜しくお願い致します。

投稿日時 - 2016-10-04 11:55:18

QNo.9238030

困ってます

質問者が選んだベストアンサー

> そもそもNullの場合は、イコールで評価出来ないのでしょうか。

はい、Null を含む式の結果は Null になりますので、評価できません。

Null = Null の結果は Null
Null = "@" の結果も Null

> If Me.AAA & "@" = Me.BK_AAA & "@" ・・・
> のように文字をくっつけて評価させればよいかと思うのですが、

それでもいいですが、通常は Nz関数を使いますね。

If Nz(Me.AAA) = Nz(Me.BK_AAA) ・・・

投稿日時 - 2016-10-04 12:37:20

お礼

hatena1989さま
いつもご回答ありがとうございます。

>Null = "@" の結果も Null
このようなケースもNullになってしまうんですね。

If Nz(Me.AAA) = Nz(Me.BK_AAA) ・・・
としてみて、それぞれNullだった場合、もとのデータが
文字列なら「if "" = "" 」、数値なら「if 0 = 0」で評価
される・・という認識でよろしいでしょうか。

投稿日時 - 2016-10-04 13:10:42

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

> 文字列なら「if "" = "" 」、数値なら「if 0 = 0」で評価
> される・・という認識でよろしいでしょうか。

はい、いいです。
Nz(Null) = "" も Nz(Null) = 0 もTrue を返します。

投稿日時 - 2016-10-05 03:19:52

お礼

ありがとうございます。
大変勉強になりました。

投稿日時 - 2016-10-05 12:02:19

Nz(Me.BK_AAA) のように全部Nz関数を通してみてください。
たぶんこれで行きます。

>If Me.AAA & "@" = Me.BK_AAA & "@" ・・・
>のように文字をくっつけて評価させればよいかと思うのですが
いや、おそらくうまくいかないでしょう。
エラーが出るんじゃないかと思います。試していませんが。

投稿日時 - 2016-10-04 12:39:59

お礼

szo_orz さま
ご回答ありがとうございます。
NZ関数ってのがあるんですね。
やってみたいと思います。

ちなみに、& "@"で実際にやりましたが特に問題無く評価
できたようです。
ただ、邪道なやり方だと思いますのでNZ関数を使ってみたい
と思います。
ありがとうございました。

投稿日時 - 2016-10-04 13:01:40

あなたにオススメの質問