Использование закладок
Перед открытием набора строк необходимо сообщить поставщику, что вы хотите использовать закладки. Для этого задайте DBPROP_BOOKMARKS
для свойства true
значение в наборе свойств. Поставщик получает закладки в виде нуля столбца, поэтому необходимо использовать специальный макрос BOOKMARK_ENTRY и CBookmark
класс, если вы используете статический метод доступа. CBookmark
— это класс шаблона, в котором аргумент является длиной в байтах буфера закладки. Длина буфера, необходимого для закладки, зависит от поставщика. Если вы используете поставщик OLE DB ODBC, как показано в следующем примере, буфер должен иметь 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);
Сведения о поддержке закладок в поставщиках см. в разделе "Поддержка поставщиков закладок".