Microsoft Access 掲示板

フォームの入力/未入力に対応する更新SQL / 6

7 コメント
views
6
hiroton 2025/04/10 (木) 10:48:08 b4b71@f966d

通常、非連結のテキストボックスに""(長さ0の文字列)が入ることはありません
フォーム上での人の操作で「何か入力」→「Delete等で削除」を行うと、非連結のテキストボックスの内容はNULLになります。(レコードソースに連結されたコントロールの場合、設定によっては""が入る場合があります)

VBAによる操作等で、直接 Me!テキストボックス = "" のような処理を行うと、非連結のテキストボックスでもその値が""になったりはします

そもそも気にしていなかったのですが、逆に、「備考を削除したい」という場合はないのでしょうか?
「NULLなので更新対象外」と、「内容削除のために""が入力されている」は実作業の上では判別できないので、「備考を削除する」チェックボックスを追加で用意するとかになると思います

また、とりあえず、回答ではIsNull()を使っていますが、NULL""同じように扱われればよいなら Me!テキストボックス & "" = "" で判定できます

Select Case True
    Case Me!Delete_Biko
        strSQL = strSQL & ", [備考]=''"
        '// データ構造によっては
        '// strSQL = strSQL & ", [備考]=NULL"
    Case Me!change_Biko & "" <> ""
        strSQL = strSQL & ", [備考]='" & Me!change_Biko & "'"
End Select

そのほかのコントロールについても、データ型が文字列型以外になるのならばIsDate()IsNumeric()等で判定してあげるとより良いと思います

Not IsNull(Null) ' =>False
Not IsNull("")   ' =>True
IsDate(Null)     ' =>False
IsDate("")       ' =>False
通報 ...