LoginSignup
1
0

More than 5 years have passed since last update.

AccessVBA DAOで選択クエリを発行したら「カレントレコードがありません」

Posted at

自分用備忘録

現象

選択クエリを投げた時、「カレントレコードがありません」と表示されてしまった

原因

選択クエリが空振り(結果が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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0