Microsoft Access 掲示板

値のないテキストボックスを…

8 コメント
views
4 フォロー

初めまして、Access初学者です。
頼れる人が周囲にいないため、Accessについて質問出来る場所を探しておりました。
これからお世話になります。

早速ですが、

Trim(Nz([テキストボックスの名前], "")) = ""

というコードが社内の既存Accessファイルにたびたび登場するのですが、
これはいったいどういった意味を持つのでしょうか?

自分で調べたところ、Nz関数というものでテキストボックスの値がNullであれば長さ0の文字に変換し、さらにTrim関数というものでスペースを削除するコードだということはわかったのですが、、、

どのようなメリットがあるのか分かりません。

驚天動地!前任者失踪丸
作成: 2024/02/16 (金) 16:07:01
通報 ...
1
すずやん 2024/02/16 (金) 16:37:43

2重に処理しているようですね。
まず「Nz」でテキストボックスに文字列が入っていればそれを、入っていない場合は「""」(空欄)を「Trim」に渡しています。
「Trim」では渡された文字列に前後の空白があればこれを削除します。「""」が渡された場合は何もしません。

ただ最後の「 = ""」は謎ですね。
そんな使い方できるんだろうか。

2

そのコード単体で1行になることはないはずです。エラーになりますので。

たぶん、下記のような感じで使われているのではないでしょうか。

If Trim(Nz([テキストボックスの名前], "")) = "" Then
   'テキストボックスが未入力(Null)だったりスペースのみの場合の処理
Else
   'テキストボックスにスペース以外の文字が入力されいるときの処理
End If
3
驚天動地!前任者失踪丸 2024/02/16 (金) 17:19:28 23e8e@44ebd >> 2

正にIf文で使われております。
質問の為当該箇所のみ抜粋して記述しました。

Nullも長さのない文字列も同じように見えるのに、わざわざ変換をかけていることに
どのようなメリットがあるのか、識者の皆様の考えをお聞かせいただきたいです。

4
すずやん 2024/02/16 (金) 17:39:32 >> 3

Nullと空欄は厳密には違います。

よって「= ""」で「""」と判断できるのは「""」だけで、NULLだと同じではないと判断されます(確かそうだったはず)

プログラマーは過去に確実に動いたコードを多用する傾向があるので、おそらく前担当者がその方法に慣れていたのではないでしょうか。

5

人間には同じように見えても、コンピューター(Access)からはまったく別物です。

例えば、
人間が見てテキストボックスが空の場合に、入力を即したい場合がよくあります。
未入力(Null)、""(空文字列)、スペースのみ、は人間からみたらすべて同じですが、
コンピューターからはすべてまったく別物に見えます。
未入力(Null)、スペースのみを""に変換して、テキストボックスが空だとコンピューターにもわかるようにしてあげる必要があります。

コンピューターは人間のように融通がききませんので。

最近はAIで結構融通が利くようになってきていますが、VBAは一昔前から進歩してませんからね。

6
驚天動地!前任者失踪丸 2024/02/19 (月) 11:16:29 23e8e@44ebd

つまりこのコードは、人間から同じように見えているものを、コンピュータにも同じように見えるための処理ということでしょうか?

7
すずやん 2024/02/19 (月) 11:23:30 >> 6

そうなりますね。

8
驚天動地!前任者失踪丸 2024/02/19 (月) 11:55:57 23e8e@44ebd

Hatenaさん、すずやんさん、ありがとうございました。
意味が分かってスッキリしました。