適用先: Access 2013、Office 2013
Recordset 内を移動した後、各レコードをスクロールして値を比較しなくても特定のレコードに直接戻ることができると便利な場合があります。 たとえば、 Find メソッドでレコードを検索して見つからなかった場合、 Recordset のいずれかの端に自動的に戻ります。 プロバイダーがブックマークをサポートしている場合、ブックマークを使用すると、 Find メソッドを使用する前の位置をマークし、その位置に戻ることができます。 ブックマークはバリアント ( Variant ) 型の値で、 Recordset オブジェクト内のレコードを一意に識別します。
また、 RecordsetFilter メソッドでブックマークのバリアント配列を使用して、選択したレコードセットをフィルター処理することもできます。 この方法の詳細については、この章の後半の「 レコードセットを使用する」の「結果のフィルター処理」を参照してください。
Bookmark プロパティを使用すると、レコードのブックマークを取得したり、 Recordset オブジェクト内の現在のレコードを、有効なブックマークで識別されたレコードに設定したりできます。 次のコードでは、 Bookmark プロパティを使用してブックマークを設定し、他のレコードに移動した後にブックマークが設定されたレコードに戻ります。 Recordset がブックマークをサポートしているかどうかを判断するには、 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 メソッドの詳細については、後で説明します。
複製された Recordset の場合を除いて、同じコマンドを使用した場合でも、ブックマークが一意なのは作成された Recordset 内です。 つまり、ある Recordset から取得した Bookmark を使用して、同じコマンドで開いた別の Recordset 内の同じレコードに移動することはできません。