データの値がNullだと抽出条件の項目で抽出できないのを何とかしたい

電脳備忘録

今回もAccess備忘録です。
下記のように抽出(検索)条件を設定しています。この場合、例えば「書類概要」が空白の場合、検索結果として表示されません。
「書類概要」が空白のデータが多々あるので、これだと検索出来ないデータが多く使えません・・・。

mySQL = "select * from 書類管理 WHERE 管理no like '*" & Me!txt_管理no & "*'" & _
"And 書類名 Like '*" & Me!txt_書類名 & "*'" & _
"And 書類概要 Like '*" & Me!txt_書類概要 & "*'"

これを解決するにはNz関数を使うといいようです。以下Office.comより引用。

Nz 関数を使うと、特定のバリアント型 (Variant) (バリアント型 (Variant): Deftype ステートメントを記述していない場合に、型宣言文字がない変数に割り当てられる既定のデータ型。バリアント型の変数には、数値、文字列、日付/時刻、 Null 値、または Empty 値を格納することができます。) の値が Null (Null: 存在しないデータまたは未知のデータを表す値。フィールドに入力したり、式やクエリで使用したりできます。Visual Basic の Null キーワードは Null 値を表します。主キー フィールドなど、Null 値を格納できないフィールドもあります。) 値になるときに、Null 値の代わりに、数値の 0、長さ 0 の文字列 (長さ 0 の文字列: 文字を 1 つも含まない文字列。長さ 0 の文字列を使うと、意図的にフィールドに値がないようにしていることを示すことができます。長さ 0 の文字列を入力するには、スペースを含めずに二重引用符を二度続けて (" ") 入力します。) (" ")、または指定したその他の戻り値が返されるようにすることができます。つまり、この関数を使って Null 値を別の値に変換することにより、式全体の結果が Null 値になるのを防ぐことができます。
なるほど、長さ0の文字列にすれば抽出できるようになるのですね。早速書き換えてみました。
mySQL = "select * from 書類管理 WHERE Nz(管理no) like '*" & Me!txt_管理no & "*'" & _
"And Nz(書類名) Like '*" & Me!txt_書類名 & "*'" & _
"And Nz(書類概要) Like '*" & Me!txt_書類概要 & "*'"

これで、検索条件に指定した項目のデータが空白でも検索結果に反映されるようになりました。

広告

ブログの維持費に充てるでございます・・・。