Condividi tramite


Uso dei segnalibri

Prima di aprire il set di righe, è necessario indicare al provider che si desidera utilizzare i segnalibri. A tale scopo, impostare la DBPROP_BOOKMARKS proprietà su true nel set di proprietà. Il provider recupera i segnalibri come colonna zero, pertanto è necessario usare la macro speciale BOOKMARK_ENTRY e la CBookmark classe se si usa una funzione di accesso statica. CBookmark è una classe modello in cui l'argomento è la lunghezza in byte del buffer dei segnalibri. La lunghezza del buffer necessaria per un segnalibro dipende dal provider. Se si usa il provider OLE DB ODBC, come illustrato nell'esempio seguente, il buffer deve essere di 4 byte.

class CProducts
{
public:
   CBookmark<4> bookmark;

   BEGIN_COLUMN_MAP(CProducts)
      BOOKMARK_ENTRY(bookmark)
   END_COLUMN_MAP()
};

Quindi, usato dal codice seguente:

CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);

CTable<CAccessor<CProducts>> product;
CSession session;
product.Open(session, "Products", &propset);

Se si usa CDynamicAccessor, il buffer viene impostato in modo dinamico in fase di esecuzione. In questo caso, è possibile usare una versione specializzata di CBookmark per cui non si specifica una lunghezza del buffer. Usare la funzione GetBookmark per recuperare il segnalibro dal record corrente, come illustrato in questo esempio di codice:

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);

Per informazioni sul supporto dei segnalibri nei provider, vedere Supporto del provider per i segnalibri.

Vedi anche

Uso delle funzioni di accesso