Bevor Sie das Rowset öffnen, müssen Sie dem Anbieter mitteilen, dass Sie Lesezeichen verwenden möchten. Hierzu legen Sie die DBPROP_BOOKMARKS -Eigenschaft auf true in den Eigenschaftensatz. Der Anbieter ruft Lesezeichen als Spalte 0 (null), so dass Sie das Spezialmakro BOOKMARK_ENTRY und die CBookmark -Klasse verwenden müssen, wenn Sie einen statischen Accessor verwenden. CBookmark ist eine auf Vorlagen basierende Klasse, wo das Argument die Länge des Lesezeichenpuffers in Bytes ist. Die Länge des Puffers für ein Lesezeichen benötigte hängt von dem Anbieter. Wenn Sie den ODBC-OLE DB-Anbieter verwenden, wie im folgenden Beispiel gezeigt, muss der Puffer 4 Bytes umfassen.
klasse CProduct
{
Öffentliche:
CBookmarklt; 4 > Lesezeichen;
BEGIN_COLUMN_MAP(CProduct)
BOOKMARK_ENTRY(Bookmark)
END_COLUMN_MAP()
};
CDBPropSet propset(DBPROPSET_ROWSET);
Propset.AddProperty (DBPROP_BOOKMARKS, true);
CTable < CAccessor <CProduct> > Produkt;
Produkt.Offen (Sitzung, "Produkte", & Propset)
Wenn Sie CDynamicAccessorverwenden, wird der Puffer zur Laufzeit dynamisch zugewiesen. In diesem Fall können Sie eine spezialisierte Version von CBookmark , für die Sie eine Pufferlänge nicht angeben. Verwenden Sie die Funktion GetBookmark das Lesezeichen aus dem aktuellen Datensatz abrufen, wie hier gezeigt:
CTablelt;CDynamicAccessor > Produkt;
CBookmark < > Lesezeichen;
CDBPropSet propset(DBPROPSET_ROWSET);
Propset.AddProperty (DBPROP_BOOKMARKS, true);
Produkt.Offen (Sitzung, "Produkte", & Propset);
Produkt.MoveNext();
Produkt.GetBookmark(&bookmark);