Condividi tramite


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.

MoveNext

SQL_FETCH_PRIOR

Il rowset precedente; nRows viene ignorato.

MovePrev

SQL_FETCH_FIRST

Il primo set di righe del recordset, nRows viene ignorato.

MoveFirst

SQL_FETCH_LAST

L'ultimo rowset completo del recordset, nRows viene ignorato.

MoveLast

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.

SetAbsolutePosition

SQL_FETCH_BOOKMARK

Il rowset che inizia dalla riga di cui il valore del segnalibro corrisponde a nRows.

SetBookmark

[!NOTA]

Per i recordset forward-only, Sposta è valido solo con un valore SQL_FETCH_NEXT per wFetchType.

Nota di avvisoAttenzione

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

Vedere anche

Riferimenti

Classe di CRecordset

Grafico della gerarchia

CRecordset::MoveNext

CRecordset::MovePrev

CRecordset::MoveFirst

CRecordset::MoveLast

CRecordset::SetAbsolutePosition

CRecordset::SetBookmark

CRecordset::IsBOF

CRecordset::IsEOF

CRecordset::CheckRowsetError