解決済み

Access Nullの評価について

  • 困ってます
  • 質問No.9238030
  • 閲覧数120
  • ありがとう数6
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 73% (488/667)

お世話になります。
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の場合は、イコールで評価出来ないのでしょうか。

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

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

  • 回答No.1

ベストアンサー率 87% (377/432)

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

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

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

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

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

If Nz(Me.AAA) = Nz(Me.BK_AAA) ・・・
お礼コメント
naoto0216

お礼率 73% (488/667)

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

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

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

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 87% (377/432)

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

はい、いいです。
Nz(Null) = "" も Nz(Null) = 0 もTrue を返します。
お礼コメント
naoto0216

お礼率 73% (488/667)

ありがとうございます。
大変勉強になりました。
投稿日時 - 2016-10-05 12:02:19
  • 回答No.2

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

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

お礼率 73% (488/667)

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

ちなみに、& "@"で実際にやりましたが特に問題無く評価
できたようです。
ただ、邪道なやり方だと思いますのでNZ関数を使ってみたい
と思います。
ありがとうございました。
投稿日時 - 2016-10-04 13:01:40
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集

ピックアップ

ページ先頭へ