Avant de vous ouvrir à l'ensemble de lignes, vous devez indiquer le fournisseur que vous souhaitez utiliser les signets. Pour ce faire, définissez la propriété DBPROP_BOOKMARKS vrai dans votre jeu de propriétés. Le fournisseur récupère les signets comme colonne zéro, donc vous devez utiliser la macro spéciale BOOKMARK_ENTRY et la classe CBookmark si vous utilisez un accesseur statique. CBookmark est une classe basé sur un modèle où l'argument est la taille en octets de la mémoire tampon du signet. La longueur de la mémoire tampon requise pour un signet dépend du fournisseur. Si vous utilisez le fournisseur OLE DB ODBC, comme illustré dans l'exemple suivant, la mémoire tampon doit être de 4 octets.
classe CProduct
{
public :
CBookmarklt; 4 > signet ;
BEGIN_COLUMN_MAP(CProduct)
BOOKMARK_ENTRY(Bookmark)
END_COLUMN_MAP()
};
CDBPropSet propset(DBPROPSET_ROWSET) ;
propset.AddProperty (DBPROP_BOOKMARKS, true) ;
CTable < CAccessor <CProduct> > produit ;
produit.Ouvert (session, « Produits », & propset)
Si vous utilisez CDynamicAccessor, la mémoire tampon est allouée dynamiquement au moment de l'exécution. Dans ce cas, vous pouvez utiliser une version spécialisée de CBookmark pour laquelle vous ne spécifiez pas une taille de mémoire tampon. Utilisez la fonction GetBookmark pour récupérer le signet de l'enregistrement en cours, comme indiqué ici:
CTablelt ;CDynamicAccessor > produit ;
CBookmark < > signet ;
CDBPropSet propset(DBPROPSET_ROWSET) ;
propset.AddProperty (DBPROP_BOOKMARKS, true) ;
produit.Ouvert (session, « Produits », & propset) ;
produit.MoveNext() ;
produit.GetBookmark(&bookmark);