インデックスを使って検索を行う

インデックスを使って検索を行う

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の位置)に移動する。

「伝票一覧」テーブル

実行結果

エラーメッセージ