Поделиться через


Использование закладок

Перед открытием набора строк сообщите поставщику про намерение использовать закладки.Чтобы выполнить это действие, присвойте свойству 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;
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);

Дополнительные сведения о поддержке закладок в поставщиках см. в разделе Поддержка поставщика для закладок.

См. также

Основные понятия

Использование методов доступа