ブックマークの使用
更新 : 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);
プロバイダでのブックマークのサポートについては、「プロバイダのブックマーク サポート」を参照してください。