ブックマークを使用する
レコードセット内を移動した後、すべてのレコードをスクロールして値を比較することなく、特定のレコードに直接戻ることが役立つことがよくあります。 たとえば、Find メソッドを使用してレコードを検索しようとしてもレコードが返されない場合、レコードセットのどちらかの端に自動的に配置されます。 プロバイダーでサポートされている場合は、ある場所に戻ることができるように、Find メソッドを使用する前にブックマークを使用して場所をマークできます。 ブックマークは、Recordset オブジェクト内のレコードを一意に識別するバリアント型の値です。
Recordset Filter メソッドでブックマークのバリアント配列を使用して、選択したレコードセットをフィルター処理することもできます。 この手法の詳細については、このセクションで後述する「レコードセットの操作」トピックの「結果のフィルター処理」を参照してください。
Bookmark プロパティを使用すると、レコードのブックマークを取得したり、Recordset オブジェクトの現在のレコードを有効なブックマークで識別されるレコードに設定したりできます。 次のコードでは、Bookmark プロパティを使用してブックマークを設定し、他のレコードに移動した後、ブックマークされたレコードに戻ります。 レコードセットでブックマークがサポートされているかどうかを確認するには、Supports メソッドを使用します。
'BeginBookmarkEg
Dim varBookmark As Variant
Dim blnCanBkmrk As Boolean
objRs.Open strSQL, strConnStr, adOpenStatic, adLockOptimistic, adCmdText
If objRs.RecordCount > 4 Then
objRs.Move 4 ' move to the fifth record
blnCanBkmrk = objRs.Supports(adBookmark)
If blnCanBkmrk = True Then
varBookmark = objRs.Bookmark ' record the bookmark
objRs.MoveLast ' move to a different record
objRs.Bookmark = varBookmark ' return to the bookmarked (sixth) record
End If
End If
'EndBookmarkEg
Supports メソッドについては、後で詳しく説明します。
複製されたレコードセットの場合を除き、ブックマークは、同じコマンドが使用されている場合でも、作成元のレコードセットに固有です。 つまり、あるレコードセットから取得したブックマークを使用して、同じコマンドで開かれた 2 つ目のレコードセット内の同じレコードに移動することはできません。