初めまして、Access初学者です。
頼れる人が周囲にいないため、Accessについて質問出来る場所を探しておりました。
これからお世話になります。
早速ですが、
Trim(Nz([テキストボックスの名前], "")) = ""
というコードが社内の既存Accessファイルにたびたび登場するのですが、
これはいったいどういった意味を持つのでしょうか?
自分で調べたところ、Nz関数というものでテキストボックスの値がNullであれば長さ0の文字に変換し、さらにTrim関数というものでスペースを削除するコードだということはわかったのですが、、、
どのようなメリットがあるのか分かりません。
2重に処理しているようですね。
まず「Nz」でテキストボックスに文字列が入っていればそれを、入っていない場合は「""」(空欄)を「Trim」に渡しています。
「Trim」では渡された文字列に前後の空白があればこれを削除します。「""」が渡された場合は何もしません。
ただ最後の「 = ""」は謎ですね。
そんな使い方できるんだろうか。
そのコード単体で1行になることはないはずです。エラーになりますので。
たぶん、下記のような感じで使われているのではないでしょうか。
正にIf文で使われております。
質問の為当該箇所のみ抜粋して記述しました。
Nullも長さのない文字列も同じように見えるのに、わざわざ変換をかけていることに
どのようなメリットがあるのか、識者の皆様の考えをお聞かせいただきたいです。
Nullと空欄は厳密には違います。
よって「= ""」で「""」と判断できるのは「""」だけで、NULLだと同じではないと判断されます(確かそうだったはず)
プログラマーは過去に確実に動いたコードを多用する傾向があるので、おそらく前担当者がその方法に慣れていたのではないでしょうか。
人間には同じように見えても、コンピューター(Access)からはまったく別物です。
例えば、
人間が見てテキストボックスが空の場合に、入力を即したい場合がよくあります。
未入力(Null)、""(空文字列)、スペースのみ、は人間からみたらすべて同じですが、
コンピューターからはすべてまったく別物に見えます。
未入力(Null)、スペースのみを""に変換して、テキストボックスが空だとコンピューターにもわかるようにしてあげる必要があります。
コンピューターは人間のように融通がききませんので。
最近はAIで結構融通が利くようになってきていますが、VBAは一昔前から進歩してませんからね。
つまりこのコードは、人間から同じように見えているものを、コンピュータにも同じように見えるための処理ということでしょうか?
そうなりますね。
Hatenaさん、すずやんさん、ありがとうございました。
意味が分かってスッキリしました。