Verwenden von Textmarken
Bevor Sie das Rowset öffnen, müssen Sie dem Anbieter mitteilen, dass Sie Lesezeichen verwenden möchten. Legen Sie dazu die DBPROP_BOOKMARKS
Eigenschaft in Ihrem Eigenschaftensatz fest true
. Der Anbieter ruft Textmarken als Spalte 0 ab, daher müssen Sie das spezielle Makro BOOKMARK_ENTRY und die CBookmark
Klasse verwenden, wenn Sie einen statischen Accessor verwenden. CBookmark
ist eine Vorlagenklasse, bei der das Argument die Länge in Byte des Lesezeichenpuffers ist. Die Länge des puffers, der für eine Textmarke erforderlich ist, hängt vom Anbieter ab. Wenn Sie den ODBC OLE DB-Anbieter verwenden, wie im folgenden Beispiel gezeigt, muss der Puffer 4 Byte betragen.
class CProducts
{
public:
CBookmark<4> bookmark;
BEGIN_COLUMN_MAP(CProducts)
BOOKMARK_ENTRY(bookmark)
END_COLUMN_MAP()
};
Anschließend wird der folgende Code verwendet:
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_BOOKMARKS, true);
CTable<CAccessor<CProducts>> product;
CSession session;
product.Open(session, "Products", &propset);
Wenn Sie den Puffer verwenden CDynamicAccessor
, wird der Puffer zur Laufzeit dynamisch festgelegt. In diesem Fall können Sie eine spezielle Version CBookmark
verwenden, für die Sie keine Pufferlänge angeben. Verwenden Sie die Funktion GetBookmark
, um die Textmarke aus dem aktuellen Datensatz abzurufen, wie in diesem Codebeispiel gezeigt:
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);
Informationen zur Unterstützung von Lesezeichen in Anbietern finden Sie unter Anbieterunterstützung für Lesezeichen.