次の方法で共有


ブックマークの使用

多くの場合、すべてのレコードをスクロールして値を比較することなく、Recordset 内を移動した後、特定のレコードに直接戻ると便利です。 たとえば、Find メソッドを使用してレコードを検索しようとしてもレコードが返されない場合、Recordsetのいずれかの末尾に自動的に配置されます。 プロバイダーがサポートしている場合は、場所に戻ることができるように、Find メソッドを使用する前にブックマークを使用して場所をマークできます。 ブックマークは、Recordset オブジェクト内のレコードを一意に識別する Variant 型の値です。

Recordset Filter メソッドでブックマークのバリアント配列を使用して、選択したレコードセットをフィルター処理することもできます。 この手法の詳細については、このセクションで後述する「レコードセット の操作」トピックの「結果のフィルター処理」を参照してください。

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  

サポート メソッドについては、後で詳しく説明します。

複製された Recordsetsの場合を除き、ブックマークは、同じコマンドが使用されている場合でも、作成された Recordset に固有です。 つまり、1 つの Recordset から取得した Bookmark を使用して、同じコマンドで開いた 2 つ目の Recordset の同じレコードに移動することはできません。