次の方法で共有


ブックマークの使用

適用先: 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 内の同じレコードに移動することはできません。