• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AccessVBA NULLについて)

AccessVBAでNULLの判定方法について

このQ&Aのポイント
  • AccessVBAを使用している際に、NULLの判定について分からない点が出てきました。具体的には、データベースから取得したrs.Fields(0)の値がNULLの場合に、エラーを回避する方法がわかりませんでした。
  • これまで以下のようなコードを試しましたが、うまくいきませんでした。 If rs.Fields(0) = Null Then Else 区分 = rs.Fields(0) End If If rs.Fields(0) Is Null Then Else シール = rs.Fields(0) End If
  • NULLをIF文で判定したい場合、具体的にどのような記述を行えばよいのでしょうか。ご教示いただけると幸いです。

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

  • ベストアンサー
回答No.1

Q、NULL値の判定? A、IsNull()を使います。 http://office.microsoft.com/ja-jp/access-help/HA001228867.aspx For Each fld In .Fields   With fld   C = C + 1     Select Case .Type       Case adBoolean ' ブール型         DataValues(R, C) = IIf(.Value = -1, "Yes", "No")       Case adChar, adVarChar ' 文字列型         DataValues(R, C) = Nz(.Value, "")       Case adDBDate, adDBTimeStamp ' 日付型、日付/時刻型         DataValues(R, C) = .Value       Case adSmallInt, adInteger ' 整数         DataValues(R, C) = FormatNumber(.Value, 0)       Case adSingle, adDouble ' 浮動小数点型         DataValues(R, C) = FormatNumber(.Value, 2)       Case adCurrency ' 通貨型         DataValues(R, C) = FormatCurrency(.Value, 2)       Case Else         DataValues(R, C) = .Value     End Select End With Next fld Null値があれば何かと不便。 ですから、私は、列の型に応じて変換して代入しています。 なお、Nz()はIsNull()で書くこともできます。 V = IIf(IsNull(.Fields(0)), "", .Fields(0)) V = IIf(IsNull(.Fields(0)), 0, .Fields(0))

shinnnn
質問者

お礼

ありがとうございました。 質問以上のご回答頂き 勉強になります。 NULLの対処について今後是非とも参考にさせて頂きたいと 思います。

その他の回答 (1)

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.2

Access からしばらく遠ざかっているのでスパッと答えられませんが、 IsNull 関数で判定するのではなかったでしょうか? If IsNull(rs.Fields(0).Value) THen それと、Field オブジェクトの既定のプロパティは Value なので省略可能なのはわかりますが、 Value の評価なのかオブジェクト変数の評価なのかわからなくなるので rs.Fields(0).Value と省略せずに書いたほうが良いと思います。

shinnnn
質問者

お礼

ありがとうございます。 問題なく処理がとおりまし。 また、省略についてのご指摘ありがとうございます。 早速、修正致しました。

関連するQ&A