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.