インデックスを使って検索を行う
Sub インデックス検索() 'Seek メソッドを使用する Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset Dim FileName As String FileName = ThisWorkbook.Path & "\mdb\2-sampleDB.mdb" myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName myRS.Open "伝票一覧", myCon, adOpenStatic, adLockReadOnly, adCmdTableDirect 'Indexプロパティに「受注コード」を設定 myRS.Index = "受注コード" '指定したインデックスを元に検索を行う myRS.Seek 1020 If myRS.EOF Then '該当レコードがない場合 MsgBox "該当レコードなし" Else '検索したフィールドの値を転記する Cells(1, 1).Value = myRS!受注コード Cells(1, 2).Value = myRS!得意先 Cells(1, 3).Value = myRS!担当者 Cells(1, 4).Value = myRS!受注日 Cells(1, 5).Value = myRS!受注金額 End If myRS.Close: Set myRS = Nothing myCon.Close: Set myCon = Nothing End Sub
検索対象となるインデックスを指定
Recordset オブジェクト.Index = インデックス名
Seek メソッドで検索する
Recordset オブジェクト.Seek 検索値/span>
インデックス検索を行うには、Open
メソッドの引数「Option」に「adCmdTableDirect」を指定して開く。
インデックスとして指定するフィールドはインデックスが設定されていること。
該当レコードが見つかった場合には、カレントレコードはその位置に移動する。
見つからない場合、エラーは発生せず、カレントレコードの位置はレコード終端(最終レコードを超えたEOFの位置)に移動する。
「伝票一覧」テーブル