ブックマークを使用する
行セットを開く前に、ブックマークを使用することをプロバイダーに指示する必要があります。 これを行うには、プロパティ セットで 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;
CSession session;
product.Open(session, "Products", &propset);
CDynamicAccessor
を使用する場合、バッファーは実行時に動的に設定されます。 この場合、CBookmark
の特殊化されたバージョンを使用できます。その場合、バッファーの長さは指定しません。 次のコード サンプルに示すように、関数 GetBookmark
を使用して現在のレコードからブックマークを取得します。
CTable<CDynamicAccessor> product;
CBookmark<> bookmark;
CDBPropSet propset(DBPROPSET_ROWSET);
CSession session;
propset.AddProperty(DBPROP_BOOKMARKS, true);
product.Open(session, "Products", &propset);
product.MoveNext();
product.GetBookmark(&bookmark);
プロバイダーでのブックマークのサポートの詳細については、「プロバイダーのブックマーク サポート」を参照してください。