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
▼ページトップに戻る