次の方法で共有


ブックマークを使用する

行セットを開く前に、ブックマークを使用することをプロバイダーに指示する必要があります。 これを行うには、プロパティ セットで 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);

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

関連項目

アクセサーの使用