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. |
|
SQL_FETCH_PRIOR |
Das vorherige Rowset; nRows wird ignoriert. |
|
SQL_FETCH_FIRST |
Das erste Rowset im Recordset; nRows wird ignoriert. |
|
SQL_FETCH_LAST |
Das letzte vollständige Rowset im Recordset; nRows wird ignoriert. |
|
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. |
|
SQL_FETCH_BOOKMARK |
Das Rowset, das an der Zeile beginnt, deren Lesezeichenwert zu nRows entspricht. |
Hinweis |
---|
Für Vorwärts-Recordsets ist Move mit einem Wert von SQL_FETCH_NEXT für wFetchType nur gültig. |
Vorsicht |
---|
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