Перед открытием набора строк сообщите поставщику необходимо использовать закладки. Это сделать, свойству DBPROP_BOOKMARKS значение true в набор свойств. Поставщик извлекает закладки как столбца равно нулю, поэтому если вы используете статического доступа необходимо использовать специальный макрос BOOKMARK_ENTRY и класс CBookmark . CBookmark — это шаблонный класс, где аргумент имеет длину в байтах буфера закладки. Длина буфера, необходимого для закладки зависит от поставщика. При использовании поставщика ODBC OLE DB, как показано в следующем примере буфер должен быть 4 байта.
класс CProduct
{
общественности:
CBookmarklt; 4 > закладки;
BEGIN_COLUMN_MAP(CProduct)
BOOKMARK_ENTRY(Bookmark)
END_COLUMN_MAP()
};
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty (DBPROP_BOOKMARKS, true);
CTable < CAccessor <CProduct> > продукт;
продукт.Открытый (сессия, «Продукты» и propset)
При использовании CDynamicAccessor, буфер динамически выделяется во время выполнения. В этом случае можно использовать специальную версию CBookmark , для которого не указан длину буфера. Используйте функцию GetBookmark , чтобы извлечь закладку из текущей записи, как показано здесь:
CTablelt;CDynamicAccessor > продукт;
Закладка CBookmark <>;
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty (DBPROP_BOOKMARKS, true);
продукт.Открытый (сессия, «Продукты» и propset);
продукт.MoveNext();
продукт.GetBookmark(&bookmark);