Utilizzo dei bookmark
Aggiornamento: novembre 2007
Prima di aprire il rowset, è necessario indicare al provider che si desidera utilizzare i bookmark. A tal scopo, impostare la proprietà DBPROP_BOOKMARKS su true. Poiché il provider recupera i bookmark come colonna zero, è necessario utilizzare la macro speciale BOOKMARK_ENTRY e la classe CBookmark se ci si avvale di una funzione di accesso statica. CBookmark è un classe modello il cui argomento corrisponde alla lunghezza del buffer dei bookmark espressa in byte. La lunghezza del buffer necessaria per un bookmark dipende dal provider. Se si utilizza il provider OLE DB ODBC, come nel seguente esempio, il buffer deve essere di 4 byte.
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);
Se si utilizza CDynamicAccessor, il buffer verrà allocato in modo dinamico in fase di esecuzione. In tal caso, è possibile utilizzare una versione speciale di CBookmark per la quale non si specifica la lunghezza del buffer. Utilizzare la funzione GetBookmark per recuperare il bookmark dal record corrente, come nell'esempio di codice riportato di seguito:
CTable<CDynamicAccessor> product;
CBookmark<> bookmark;
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);
product.Open(session, "Products", &propset);
product.MoveNext();
product.GetBookmark(&bookmark);
Per informazioni sul supporto dei bookmark nei provider, vedere Supporto dei bookmark da parte dei provider.