Recordset: Lesezeichen und absolute Positionen (ODBC)

Aktualisiert: November 2007

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

Wenn Sie durch ein Recordset navigieren, benötigen Sie häufig die Möglichkeit, zu einem bestimmten Datensatz zurückzukehren. Zwei Möglichkeiten hierfür bieten das Lesezeichen und die absolute Position eines Datensatzes.

In diesem Thema wird Folgendes erläutert:

  • Wie Sie Lesezeichen verwenden.

  • Wie Sie mithilfe der absoluten Position den aktuellen Datensatz festlegen.

Lesezeichen in MFC-ODBC

Ein Lesezeichen 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. Zuverlässiger markieren Sie die Position eines Datensatzes mit dessen Lesezeichen. Die CRecordset-Klasse stellt Memberfunktionen für folgende Operationen bereit:

  • Ermitteln des Lesezeichens für den aktuellen Datensatz, das Sie dann in einer Variablen speichern können (GetBookmark).

  • Schnelles Navigieren zu einem bestimmten Datensatz durch Angabe des Lesezeichens, das Sie in einer Variablen gespeichert hatten (SetBookmark).

Das folgende Beispiel zeigt, wie Sie mithilfe dieser Memberfunktionen den aktuellen Datensatz markieren und später zu diesem zurückkehren können:

// 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 aus dem CDBVariant Class-Objekt nicht den zugrunde liegenden Datentyp extrahieren. Weisen Sie der Variablen lediglich mit GetBookmark einen Wert zu und kehren Sie mit SetBookmark zu diesem Lesezeichen zurück.

Hinweis:

Je nach dem verwendeten ODBC-Treiber und dem Recordsettyp werden Lesezeichen eventuell nicht unterstützt. Sie können problemlos feststellen, ob Lesezeichen unterstützt werden, indem Sie CRecordset::CanBookmark aufrufen. Falls Lesezeichen unterstützt werden, müssen Sie explizit angeben, dass diese implementiert werden sollen. Übergeben Sie hierzu den Wert CRecordset::useBookmarks an die CRecordset::Open-Memberfunktion. Sie müssen außerdem nach bestimmten Recordset-Operationen die Beständigkeit der Lesezeichen überprüfen. Wenn Sie ein Recordset beispielsweise mit Requery neu abgefragt haben, sind die Lesezeichen unter Umständen nicht mehr gültig. Rufen Sie CDatabase::GetBookmarkPersistence auf, um zu überprüfen, ob Sie SetBookmark sicher aufrufen können.

Absolute Positionen in MFC-ODBC

Neben Lesezeichen bietet die CRecordset-Klasse die Möglichkeit, den aktuellen Datensatz durch Angabe einer Ordinalposition festzulegen. Diese Methode wird als absolutes Positionieren bezeichnet.

Hinweis:

Absolutes Positionieren ist in Vorwärts-Recordsets nicht möglich. Weitere Informationen über Vorwärts-Recordsets finden Sie unter Recordset (ODBC).

Rufen Sie CRecordset::SetAbsolutePosition auf, um den Zeiger für den aktuellen Datensatz mithilfe einer absoluten Position zu verschieben. Wenn Sie einen Wert an SetAbsolutePosition übergeben, wird der Datensatz zum aktuellen Datensatz, der dieser Ordinalposition zugeordnet ist.

Hinweis:

Die absolute Position eines Datensatzes kann nicht immer zuverlässig angegeben werden. Wenn der Benutzer Datensätze aus dem Recordset löscht, ändert sich die Ordinalposition aller nachfolgenden Datensätze. Für das Bewegen des aktuellen Datensatzes werden daher Lesezeichen empfohlen. Weitere Informationen finden Sie unter Lesezeichen in MFC ODBC.

Weitere Informationen zur Recordsetnavigation finden Sie unter Recordset: Scrollen (ODBC).

Siehe auch

Konzepte

Recordset (ODBC)