Utilisation de signets
Avant d’ouvrir l’ensemble de lignes, vous devez indiquer au fournisseur que vous souhaitez utiliser des signets. Pour ce faire, définissez la DBPROP_BOOKMARKS
propriété true
sur dans votre jeu de propriétés. Le fournisseur récupère les signets en tant que colonne zéro. Vous devez donc utiliser la macro spéciale BOOKMARK_ENTRY et la CBookmark
classe 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 longueur de la mémoire tampon requise pour un signet dépend du fournisseur. Si vous utilisez le fournisseur ODBC OLE DB, comme illustré dans l’exemple suivant, la mémoire tampon doit être de 4 octets.
class CProducts
{
public:
CBookmark<4> bookmark;
BEGIN_COLUMN_MAP(CProducts)
BOOKMARK_ENTRY(bookmark)
END_COLUMN_MAP()
};
Ensuite, utilisé par le code suivant :
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);
CTable<CAccessor<CProducts>> product;
CSession session;
product.Open(session, "Products", &propset);
Si vous utilisez CDynamicAccessor
, la mémoire tampon est définie dynamiquement au moment de l’exécution. Dans ce cas, vous pouvez utiliser une version spécialisée pour CBookmark
laquelle vous ne spécifiez pas de longueur de mémoire tampon. Utilisez la fonction GetBookmark
pour récupérer le signet à partir de l’enregistrement actif, comme indiqué dans cet exemple de code :
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);
Pour plus d’informations sur la prise en charge des signets dans les fournisseurs, consultez Prise en charge des fournisseurs pour les signets.