自分用備忘録
現象
選択クエリを投げた時、「カレントレコードがありません」と表示されてしまった
原因
選択クエリが空振り(結果が0件)したにも関わらず、レコードセット内のデータを参照した
例
悪い例
たとえば以下のようなコードだと、選択クエリが空振りした場合
MsgBox表示の段階で「カレントレコードがありません」というデバッグメッセージが出てしまい実行が止まる
Private Sub 取得ボタン_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
sql = "SELECT ID, 氏名, 電話番号 FROM 従業員マスタ WHERE ID=" & テキスト.Value
Set db = CurrentDb
Set rs = db.OpenRecordset(sql)
MsgBox "ようこそ" & rs!氏名 & " さん!"
Set rs = Nothing
Set db = Nothing
End Sub
改善例
「レコードセットの終端に到達しているか」を検査することによって回避する
Private Sub 取得ボタン_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
sql = "SELECT ID, 氏名, 電話番号 FROM 従業員マスタ WHERE ID=" & テキスト.Value
Set db = CurrentDb
Set rs = db.OpenRecordset(sql)
If rs.EOF then
MsgBox "レコードがみつかりません"
Else
MsgBox "ようこそ" & rs!氏名 & " さん!"
End If
Set rs = Nothing
Set db = Nothing
End Sub