Antes de abrir o conjunto de linhas, você deve informar o provedor que você deseja usar indicadores. Para fazer isso, defina a propriedade DBPROP_BOOKMARKS como verdadeiro no seu conjunto de propriedades. O provedor recupera indicadores como coluna zero, portanto você deve usar a macro especial BOOKMARK_ENTRY e a classe de CBookmark se você estiver usando um acessador estático. CBookmark é uma classe de modelo onde o argumento é o comprimento em bytes do buffer indicador. O comprimento do buffer necessário para um indicador depende do provedor. Se você estiver usando o provedor OLE DB ODBC, como mostrado no exemplo a seguir, o buffer deve ter 4 bytes.
classe CProduct
{
público:
CBookmarklt; 4 > marcador;
BEGIN_COLUMN_MAP(CProduct)
BOOKMARK_ENTRY(Bookmark)
END_COLUMN_MAP()
};
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty (DBPROP_BOOKMARKS, true);
CTable < CAccessor <CProduct> > produto;
produto.Aberta (sessão, "Produtos" & propset)
Se você usar CDynamicAccessor, o buffer é alocado dinamicamente em tempo de execução. Nesse caso, você pode usar uma versão especializada do CBookmark para o qual você não especificar um tamanho do buffer. Use a função GetBookmark para recuperar o indicador do registro atual, como mostrado aqui:
CTablelt;CDynamicAccessor > produto;
CBookmark < > marcador;
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty (DBPROP_BOOKMARKS, true);
produto.Aberta (sessão, "Produtos" & propset);
produto.MoveNext();
produto.GetBookmark(&bookmark);