- ベストアンサー
AccessVBAでNULLの判定方法について
- 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文で判定したい場合、具体的にどのような記述を行えばよいのでしょうか。ご教示いただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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))
その他の回答 (1)
- x-1919
- ベストアンサー率52% (91/173)
Access からしばらく遠ざかっているのでスパッと答えられませんが、 IsNull 関数で判定するのではなかったでしょうか? If IsNull(rs.Fields(0).Value) THen それと、Field オブジェクトの既定のプロパティは Value なので省略可能なのはわかりますが、 Value の評価なのかオブジェクト変数の評価なのかわからなくなるので rs.Fields(0).Value と省略せずに書いたほうが良いと思います。
お礼
ありがとうございます。 問題なく処理がとおりまし。 また、省略についてのご指摘ありがとうございます。 早速、修正致しました。
お礼
ありがとうございました。 質問以上のご回答頂き 勉強になります。 NULLの対処について今後是非とも参考にさせて頂きたいと 思います。