実行時エラー3021
実行時エラー3021「BOFとEOFのいずれかTRUEになっていか、または現のレコード要求された操作には、現在のレコードが必要です。」
というエラーが発生します。
エラーになるコードの一部を掲載します。
コードの内容は、アクセスのT_店名テーブルで、str店名の値同じレコードの地図フィールドの値を取得する内容です。
地図フィールドがnullなら何も取得しないようにifステートメントで分けています。
------------------------------------------------------------
str店名="abc会社"
rs.Open "SELECT * FROM T_店名", cn, adOpenStatic, adLockPessimistic
rs.Filter = "店名 = '" & str店名 & "'"
If IsNull(rs("地図")) = True Then
Else
’ここでエラーになる
str地図 = rs("地図")
End If
rs.Close: Set rs = Nothing
------------------------------------------------------------
"abc会社"は、コード上(VBA上)
IsNull(rs("地図")) = True では、Falseになってしまい、
str地図 = rs("地図")
でエラーになります。
目で見た限り
"abc会社"は、T_店名テーブルに存在しますし、
地図フィールドはNullっぽいです。
なのになぜ
If IsNull(rs("地図")) = True Then
で、True にならないのでしょうか?
True にならないために、
str地図 = rs("地図")
で、実行時エラー3021というエラーになってしまうようです。
お礼
ありがとうございました。