Microsoft Access VBA - DAO で レコードを検索する方法

◆概要
 DAOでレコードの検索をするには、FindFirst,FindLast,FindNext,FindPreviousメソッドを使います。  FindFirst,FindLast,FindNext,FindPreviousメソッドは、ダイナセットタイプまたはスナップショットタイプのRecordsetオブジェクトで、レコード検索を行うメソッドです。検索されたレコードは、カレントレコードになります。これはJetワークスペースでのみ使用できます。

◆メソッドの種類

メソッドの種類 説明
FindFirst 先頭のレコードから最後のレコードに向かって検索します。
FindLast 最後のレコードから先頭のレコードに向かって検索します。
FindNext 最後のレコードに向かって検索します。
FindPrevioius 先頭のレコードに向かって検索します。

◆DAOでレコード検索を行う書式


書式

recordset.{FindFirst|FindLast|FindNext|FindPrevious} criteriaon


機能

レコード検索を行う。


設定例

rs.FindFirst criteriaon


意味

レコードセット「rs」の先頭レコードから最後のレコードに向かってレコード検索を行う。


設定項目

FindFirst,FindLast,FindNext,FindPreviousメソッドに共通の設定項目

[recordset] 開いているRecordsetオブジェクト変数を指定します。

[criteria] レコードの検索条件を指定します。

◆使用例

Private Sub cmdFindName_Click()
' 氏名検索
    Dim criteriaon As String
    
    On Error GoTo Err_cmdFindName
    
    ' txtNameが空白のときは処理を抜ける
    If txtName = "" Then
        Msgbox "検索する氏名が未入力です。" & vbCrLf & vbNewLine & _
            "入力してやり直してください。", vbOKOnly + vbCritical, "氏名入力エラー"
        txtName.SetFocus
        Exit Sub
    End If
    
    criteriaon = "[氏名] = '" & Me![txtName] & "'"
    rs.FindFirst criteriaon
    If Not rs.NoMatch Then  ' 見つかったら
        Me!お客様コード = rs!お客様コード
        Me!氏名 = rs!氏名
        Me!配達先 = rs!配達先
    Else
        Msgbox "その氏名でお客様は登録されていません。", _
            vbCritical, "氏名エラー"
        txtName.SetFocus
        Exit Sub
    End If
    Exit Sub
    
Err_cmdFindName:
    Msgbox Str$(Err) & Err.Description

End Sub


▼ページトップに戻る