Partager via


Utilisation des signets

Avant d'ouvrir le jeu de ligne, vous devez indiquer au fournisseur que vous souhaitez utiliser des signets. Pour ce faire, affectez à la propriété DBPROP_BOOKMARKS la valeur true dans votre jeu de propriétés. Le fournisseur récupère des 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 de modèle où l'argument est la longueur en octets de la mémoire tampon de signet. La taille de la mémoire tampon requise pour un signet dépend du fournisseur. Si vous utilisez le fournisseur OLE DB ODBC, comme le montre l'exemple suivant, la mémoire tampon doit avoir une capacité de 4 octets.

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

Si vous utilisez CDynamicAccessor, la mémoire tampon est affectée dynamiquement au moment de l'exécution. En 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é dans cet exemple de code :

CTable<CDynamicAccessor> product;
CBookmark<>              bookmark;
CDBPropSet propset(DBPROPSET_ROWSET);

propset.AddProperty(DBPROP_BOOKMARKS, true);
product.Open(session, "Products", &propset);
product.MoveNext();
product.GetBookmark(&bookmark);

Pour plus d'informations sur la prise en charge des signets par les fournisseurs, consultez Prise en charge des signets par le fournisseur.

Voir aussi

Concepts

Utilisation des accesseurs