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


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

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

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

См. также

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