Recordset: Lesezeichen und absolute Positionen (ODBC)

Dieses Thema bezieht sich auf die MFC-ODBC-Klassen.

Beim Navigieren durch ein Recordset benötigen Sie häufig eine Möglichkeit, zu einem bestimmten Datensatz zurückzukehren. Die Textmarke und absolute Position eines Datensatzes stellen zwei solche Methoden bereit.

In diesem Thema wird Folgendes erläutert:

Lesezeichen in MFC ODBC

Eine Textmarke identifiziert einen Datensatz eindeutig. Wenn Sie durch ein Recordset navigieren, können Sie sich nicht immer auf die absolute Position eines Datensatzes verlassen, da Datensätze aus dem Recordset gelöscht werden können. Die zuverlässige Möglichkeit, die Position eines Datensatzes nachzuverfolgen, besteht darin, seine Textmarke zu verwenden. Klasse CRecordset stellt Memberfunktionen für:

  • Abrufen der Textmarke des aktuellen Datensatzes, sodass Sie es in einer Variablen (GetBookmark) speichern können.

  • Sie können schnell zu einem bestimmten Datensatz wechseln, indem Sie die Textmarke angeben, die Sie zuvor in einer Variablen (SetBookmark) gespeichert haben.

Im folgenden Beispiel wird veranschaulicht, wie Sie diese Memberfunktionen verwenden, um den aktuellen Datensatz zu markieren und später dorthin zurückzukehren:

// rs is a CRecordset or
// CRecordset-derived object

CDBVariant varRecordToReturnTo;
rs.GetBookmark( varRecordToReturnTo );

// More code in which you
// move to other records

rs.SetBookmark( varRecordToReturnTo );

Sie müssen den zugrunde liegenden Datentyp nicht aus dem CDBVariant Class-Objekt extrahieren. Weisen Sie den Wert mit GetBookmark dieser Textmarke zu, und kehren Sie zu dieser Textmarke zurück.SetBookmark

Hinweis

Je nach ODBC-Treiber- und Recordsettyp werden Lesezeichen möglicherweise nicht unterstützt. Sie können ganz einfach ermitteln, ob Lesezeichen durch Aufrufen von CRecordset::CanBookmark unterstützt werden. Wenn Lesezeichen unterstützt werden, müssen Sie diese explizit implementieren, indem Sie die CRecordset::useBookmarks Option in der CRecordset::Open-Memberfunktion angeben. Sie sollten auch die Persistenz von Lesezeichen nach bestimmten Recordsetvorgängen überprüfen. Wenn Sie Requery z. B. ein Recordset haben, sind Lesezeichen möglicherweise nicht mehr gültig. Rufen Sie CDatabase::GetBookmarkPersistence auf, um zu überprüfen, ob Sie sicher aufrufen SetBookmarkkönnen.

Absolute Positionen in MFC ODBC

Neben Lesezeichen können Sie mit der Klasse CRecordset den aktuellen Datensatz festlegen, indem Sie eine Ordnungsposition angeben. Dies wird als absolute Positionierung bezeichnet.

Hinweis

Die absolute Positionierung ist für Vorwärtsrecordsets nicht verfügbar. Weitere Informationen zu Vorwärtsrecordsets finden Sie unter Recordset (ODBC).For more information about forward-only recordsets, see Recordset (ODBC).

Um den aktuellen Datensatzzeiger mithilfe der absoluten Position zu verschieben, rufen Sie CRecordset::SetAbsolutePosition auf. Wenn Sie einen Wert SetAbsolutePositionangibt, wird der Datensatz, der dieser Ordnungsposition entspricht, zum aktuellen Datensatz.

Hinweis

Die absolute Position eines Datensatzes ist potenziell unzuverlässig. Wenn der Benutzer Datensätze aus dem Recordset löscht, ändert sich die Ordnungsposition aller nachfolgenden Datensätze. Lesezeichen sind die empfohlene Methode zum Verschieben des aktuellen Datensatzes. Weitere Informationen finden Sie unter Bookmarks in MFC ODBC.

Weitere Informationen zur Recordsetnavigation finden Sie unter Recordset: Scrolling (ODBC).For more information about recordset navigation, see Recordset: Scrolling (ODBC).

Siehe auch

Recordset (ODBC)