CRecordset::Move
Sposta il puntatore del record corrente nel recordset, avanti o indietro.
virtual void Move(
long nRows,
WORD wFetchType = SQL_FETCH_RELATIVE
);
Parametri
nRows
Il numero di righe da spostare avanti o indietro.I valori positivi avanzano avanti, verso la fine del recordset.I valori negativi avanzano indietro, all'inizio.wFetchType
Determina il rowset Sposta recupererà.Per informazioni dettagliate, vedere i commenti.
Note
Se si passa un valore di 0 per nRows, Sposta aggiornare il record corrente; Sposta terminerà qualsiasi AddNew o modalità corrente Modifica e ripristinato il valore del record corrente prima AddNew o Modifica venga chiamato.
[!NOTA]
Quando si passa a un recordset, non è possibile ignorare i record eliminati.Vedere CRecordset::IsDeleted per ulteriori informazioni.Quando si apre CRecordset con il set di opzioni skipDeletedRecords, asserzioni Sposta se il parametro nRows è 0.Questo comportamento impedisce l'aggiornamento delle righe eliminate da altre applicazioni client utilizzando gli stessi dati.Vedere il parametro dwOption in Apri per una descrizione skipDeletedRecords.
Sposta riposiziona il recordset dai rowset.In base ai valori per nRows e wFetchType, Sposta recuperato il rowset appropriato e quindi imposta il primo record nel rowset il record corrente.Se non si è implementato il recupero di massa di righe, la dimensione del rowset è sempre 1.Quando si recupera un rowset, Sposta direttamente chiama la funzione membro CheckRowsetError per gestire gli errori derivandole dalla raccolta.
A seconda dei valori passati, Sposta è equivalente alle altre funzioni membro CRecordset.In particolare, il valore wFetchType può indicare una funzione membro che è più intuitiva e spesso il metodo preferito per spostare il record corrente.
Nella tabella seguente sono elencati i possibili valori per wFetchType, il rowset Sposta recupererà basato su wFetchType e su nRowse qualsiasi funzione membro equivalente che corrisponde a wFetchType.
wFetchType |
Rowset recuperato |
Funzione membro equivalente |
---|---|---|
SQL_FETCH_RELATIVE (valore predefinito) |
Il rowset che avvia le righe nRows dalla prima riga del rowset corrente. |
|
SQL_FETCH_NEXT |
Il rowset successivo, nRows viene ignorato. |
|
SQL_FETCH_PRIOR |
Il rowset precedente; nRows viene ignorato. |
|
SQL_FETCH_FIRST |
Il primo set di righe del recordset, nRows viene ignorato. |
|
SQL_FETCH_LAST |
L'ultimo rowset completo del recordset, nRows viene ignorato. |
|
SQL_FETCH_ABSOLUTE |
Se nRows > 0, il rowset che avvia le righe nRows inizio del recordset.Se nRows < 0, il rowset che avvia le righe nRows dalla fine del recordset.Se nRows = 0, quindi uno stato (BOF) di inizio del file viene restituito. |
|
SQL_FETCH_BOOKMARK |
Il rowset che inizia dalla riga di cui il valore del segnalibro corrisponde a nRows. |
[!NOTA]
Per i recordset forward-only, Sposta è valido solo con un valore SQL_FETCH_NEXT per wFetchType.
Attenzione |
---|
Chiamando Sposta genera un'eccezione se il recordset non dispone di record.Per determinare se il recordset è un record, chiamare IsBOF e IsEOF. |
[!NOTA]
Se si è spostato dopo l'inizio o la fine del recordsetIsBOF o IsEOF restituisce diverso da zero), chiamando una funzione Sposta eventualmente genererà CDBException.Ad esempio, se IsEOF restituisce diverso da zero e IsBOF contrario, quindi MoveNext genererà un'eccezione, ma non MovePrev.
[!NOTA]
Se si chiama Sposta mentre il record corrente viene aggiornato o stata aggiunta, gli aggiornamenti verranno persi senza avviso.
Per ulteriori informazioni sulla navigazione del recordset, vedere gli articoli recordset: Scorrimento (ODBC) e recordset: Segnalibri e absolute position (ODBC).Per ulteriori informazioni sul recupero di massa di righe, vedere l'articolo recordset: Recupero di massa di record (ODBC).Per informazioni correlate, vedere la funzione API ODBC SQLExtendedFetch in Windows SDK.
Eccezioni
Questo metodo può generare eccezioni di tipo CDBException* e CMemoryException*.
Esempio
// 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();
Requisiti
Header: afxdb.h