ブックマークの使用

更新 : 2007 年 11 月

行セットを開く前に、ブックマークを使用することをプロバイダに通知する必要があります。これを通知するには、プロパティ セットの DBPROP_BOOKMARKS プロパティを true に設定します。プロバイダはブックマークを列 0 として取得するため、静的アクセサを使用している場合は、BOOKMARK_ENTRY という特殊マクロと CBookmark クラスを使用する必要があります。CBookmark クラスはテンプレート クラスで、引数はブックマーク バッファの長さ (バイト単位) です。ブックマークに必要なバッファの長さは、プロバイダによって異なります。次の例のように ODBC OLE DB プロバイダを使用している場合、バッファは 4 バイトにする必要があります。

class CProducts
{
public:
   CBookmark<4>   bookmark;

   BEGIN_COLUMN_MAP(CProducts)
      BOOKMARK_ENTRY(bookmark)
   END_COLUMN_MAP()
};

CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);

CTable<CAccessor<CProducts> > product;
product.Open(session, "Products", &propset);

CDynamicAccessor を使用している場合、バッファは実行時に動的に割り当てられます。この場合は、バッファの長さを指定しない特別なバージョンの CBookmark を使用できます。次のコード例に示すように、GetBookmark 関数を使用して、現在のレコードからブックマークを取得します。

CTable<CDynamicAccessor> product;
CBookmark<>              bookmark;
CDBPropSet propset(DBPROPSET_ROWSET);

propset.AddProperty(DBPROP_BOOKMARKS, true);
product.Open(session, "Products", &propset);
product.MoveNext();
product.GetBookmark(&bookmark);

プロバイダでのブックマークのサポートについては、「プロバイダのブックマーク サポート」を参照してください。

参照

概念

アクセサの使用