Condividi tramite


Utilizzo dei bookmark

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. Il provider recupera i segnalibri come colonna zero, pertanto è necessario utilizzare la macro speciale BOOKMARK_ENTRY e la classe CBookmark se si sta utilizzando una funzione di accesso statica. CBookmark è una classe di modello in cui l'argomento è la lunghezza in byte del buffer del segnalibro. 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.

Vedere anche

Concetti

Utilizzo delle funzioni di accesso