Freigeben über


CRecordset::Move

Verschiebt den Zeiger für den aktuellen Datensatz innerhalb des Recordsets, entweder vorwärts oder rückwärts.

virtual void Move( 
   long nRows, 
   WORD wFetchType = SQL_FETCH_RELATIVE  
);

Parameter

  • nRows
    Die Anzahl der Zeilen, um vorwärts oder rückwärts zu verschieben. Positive Werte verschieben vorwärts, gegen Ende des Recordsets. Negative Werte rückwärts verschieben, für den Start.

  • wFetchType
    Bestimmt das Rowset, das Move abruft. Details finden Sie Hinweise.

Hinweise

Wenn Sie einen Wert von 0 für nRows übergeben, aktualisiert Move den aktuellen Datensatz; Move beendet jedes aktuelle AddNew oder Bearbeiten Modus und stellt den Wert des aktuellen Datensatzes wiederher, bevor AddNew oder Bearbeiten aufgerufen wurden.

Hinweis

Wenn Sie durch ein Recordset navigieren, können Sie gelöschte Datensätze nicht überspringen.Siehe CRecordset::IsDeleted weitere Informationen.Wenn Sie CRecordset mit dem skipDeletedRecords Optionssatz öffnen, Move Assertionen, wenn der nRows-Parameter 0 ist.Dieses Verhalten verhindert die Aktualisierung von Zeilen, die von anderen Clientanwendungen mit denselben Daten gelöscht werden.Siehe den dwOption-Parameter in Geöffnet für eine Beschreibung der skipDeletedRecords.

Move ordnet das Recordset um Rowsets. Auf Grundlage der Werte für nRows und wFetchType, ruft Move das entsprechende Rowset ab und stellt den ersten Datensatz in diesem Rowset den aktuellen Datensatz auf. Wenn Sie das gesammelte Abrufen von Zeilen nicht implementiert haben, ist die Größe des Rowsets immer 1. Wenn ein Rowset abgerufen, ruft Move direkt die CheckRowsetError-Memberfunktion auf, um alle Fehler zu behandeln, verfügbar im Abruf.

Abhängig von den Werten übergeben Sie, Move entsprechen anderen CRecordset-Memberfunktionen. Insbesondere gibt den Wert kann von wFetchType eine Memberfunktion an, die intuitiver und häufig die bevorzugte Methode zum Verschieben des aktuellen Datensatzes ist.

In der folgenden Tabelle sind die möglichen Werte für wFetchType, das Rowset, die Move auf Grundlage wFetchType und nRows abruft, und jede entsprechende Memberfunktion entsprechend wFetchType auf.

wFetchType

Abgerufenes Rowset

Zugehörige Memberfunktion

SQL_FETCH_RELATIVE (Standardwert)

Das Rowset, das nRows Reihe von der ersten Zeile im aktuellen Rowset beginnt.

 

SQL_FETCH_NEXT

Im folgenden Rowset; nRows wird ignoriert.

MoveNext

SQL_FETCH_PRIOR

Das vorherige Rowset; nRows wird ignoriert.

MovePrev

SQL_FETCH_FIRST

Das erste Rowset im Recordset; nRows wird ignoriert.

MoveFirst

SQL_FETCH_LAST

Das letzte vollständige Rowset im Recordset; nRows wird ignoriert.

MoveLast

SQL_FETCH_ABSOLUTE

Wenn nRows > 0, das Rowset, das nRows Reihe vom Anfang des Recordsets beginnt. Wenn nRows < 0, das Rowset, das nRows Zeilen vom Ende des Recordsets beginnt. Wenn nRows = 0, dann eine Anfang-vonDatei (BOF) Zustand zurückgegeben wird.

SetAbsolutePosition

SQL_FETCH_BOOKMARK

Das Rowset, das an der Zeile beginnt, deren Lesezeichenwert zu nRows entspricht.

SetBookmark

Hinweis

Für Vorwärts-Recordsets ist Move mit einem Wert von SQL_FETCH_NEXT für wFetchType nur gültig.

Warnung

Move dazu, löst eine Ausnahme aus, wenn das Recordset keine Datensätze verfügt.Um festzustellen ob das Recordset alle Datensätze aufweist, rufen Sie IsBOF und IsEOF auf.

Hinweis

Wenn Sie über den Anfang oder Ende des Recordsets (IsBOF oder IsEOF gibt Wert ungleich 0 zurück), gescrollt haben, eine Move-Funktion dazu löst möglicherweise CDBException aus.Wenn IsEOF-Wert ungleich 0 zurückgibt und IsBOF nicht, dann MoveNext löst eine Ausnahme aus, während MovePrev wird nicht.

Hinweis

Wenn Sie Move aufrufen, während der aktuelle Datensatz aktualisiert oder hinzugefügt wird, sind die Updates verloren, ohne Warnung.

Weitere Informationen zur Recordsetnavigation, finden Sie in Artikel Recordset: Scrollen (ODBC) und Recordset: Lesezeichen und absolute Positionen (ODBC). Weitere Informationen über das gesammelte Abrufen von Zeilen, finden Sie im Artikel Recordset: Datensätzen in einer Sammeloperation (ODBC). Weitere Informationen finden Sie unter die ODBC-API-Funktion SQLExtendedFetch in Windows SDK.

Ausnahmen

Diese Methode kann Ausnahmen des Typs CDBException* und CMemoryException* auslösen.

Beispiel

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

// Change the rowset size to 5
rs.SetRowsetSize(5);

// Open the recordset
rs.Open(CRecordset::dynaset, NULL, CRecordset::useMultiRowFetch);

// Move to the first record in the recordset
rs.MoveFirst();

// Move to the sixth record
rs.Move(5);
// Other equivalent ways to move to the sixth record:
rs.Move(6, SQL_FETCH_ABSOLUTE);
rs.SetAbsolutePosition(6);
// In this case, the sixth record is the first record in the next rowset, 
// so the following are also equivalent:
rs.MoveFirst();
rs.Move(1, SQL_FETCH_NEXT);

rs.MoveFirst();
rs.MoveNext();

Anforderungen

Header: afxdb.h

Siehe auch

Referenz

CRecordset-Klasse

Hierarchiediagramm

CRecordset::MoveNext

CRecordset::MovePrev

CRecordset::MoveFirst

CRecordset::MoveLast

CRecordset::SetAbsolutePosition

CRecordset::SetBookmark

CRecordset::IsBOF

CRecordset::IsEOF

CRecordset::CheckRowsetError