CRecordset::Move
Move o ponteiro de registro atual no conjunto de registros, direta ou para trás.
virtual void Move(
long nRows,
WORD wFetchType = SQL_FETCH_RELATIVE
);
Parâmetros
nRows
O número de linhas para mover para frente e para trás. Os valores positivos movem para frente, para o final do conjunto de registros. Os valores negativos movem para trás, para o início.wFetchType
Determina o rowset que Mover buscará. Para obter detalhes, consulte comentários.
Comentários
Se você passar um valor de 0 para nRows, Mover atualizar o registro atual; Mover terminou qualquer AddNew ou modo atual de Editar , e restaurou o valor de registro atual antes que AddNew ou Editar foram chamados.
Dica
Quando você move com um conjunto de registros, você não pode ignorar registros excluídos.Consulte CRecordset::IsDeleted para mais informações.Quando você abre CRecordset com a opção definida de skipDeletedRecords , Mover afirma se o parâmetro de nRows é 0.Esse comportamento impede a atualização das linhas que são excluídas por outros aplicativos cliente usando os mesmos dados.Consulte o parâmetro de dwOption em Abrir para obter uma descrição de skipDeletedRecords.
Mover reposiciona o conjunto de registros por rowsets. Com base nos valores para nRows e wFetchTypeMover pesquisa, o rowset apropriado e torna um registro no primeiro registro no rowset atual. Se você não tiver implementado a linha em massa que pesquisa, então o tamanho de rowset é sempre 1. Quando buscar um rowset, Mover chamar diretamente a função de membro de CheckRowsetError para manipular erros resultantes de esforço.
Dependendo dos valores, você passa Mover é equivalente a outras funções de membro de CRecordset . Em particular, o valor de wFetchType pode indicar uma função de membro que é mais intuitiva e freqüentemente o método preferido para mover o registro atual.
A tabela a seguir lista os valores possíveis para wFetchType, o rowset que Mover buscará baseado em wFetchType e em nRows, e qualquer função de membro equivalente que corresponde a wFetchType.
wFetchType |
Rowset obtido |
Função de membro equivalente |
---|---|---|
SQL_FETCH_RELATIVE (o valor padrão) |
O rowset que inicia fileiras de nRows da primeira linha em rowset atual. |
|
SQL_FETCH_NEXT |
O seguinte rowset; nRows é ignorado. |
|
SQL_FETCH_PRIOR |
o rowset anterior; nRows é ignorado. |
|
SQL_FETCH_FIRST |
O primeiro rowset no conjunto de registros; nRows é ignorado. |
|
SQL_FETCH_LAST |
O rowset completo o último no conjunto de registros; nRows é ignorado. |
|
SQL_FETCH_ABSOLUTE |
Se nRows > 0, o rowset que inicia fileiras de nRows do início do conjunto de registros. Se nRows < 0, o rowset que inicia fileiras de nRows do final do conjunto de registros. Se nRows = 0, uma condição de início -- (BOF) Arquivo é retornado em. |
|
SQL_FETCH_BOOKMARK |
O rowset que começa na linha cujo valor do indexador corresponde a nRows. |
Dica
Para conjuntos de registros somente encaminhamentos, Mover é válido somente com um valor de SQL_FETCH_NEXT para wFetchType.
Aviso
A chamada Mover gera uma exceção se o recordset não tem nenhum registro.Para determinar se o recordset ter quaisquer registros, chame IsBOF e IsEOF.
Dica
Se você foi rolado após o início ou fim do conjunto de registros (IsBOF ou IsEOF retornam diferente de zero), a chamada uma função de Mover irá acionar possivelmente CDBException.Por exemplo, se IsEOF retorna diferente de zero e IsBOF contrário, então MoveNext irá acionar uma exceção, mas não MovePrev .
Dica
Se você chamar Mover quando o registro atual é atualizado ou adicionado, atualizações são perdidas sem aviso.
Para obter mais informações sobre navegação do conjunto de registros, consulte os artigos conjunto de registros: Rolagem (ODBC) e conjunto de registros: Indexadores e posições absolutas (ODBC). Para obter mais informações sobre a linha em massa que pesquisa, consulte o artigo conjunto de registros: Para buscar registros em massa (ODBC). Para informações relacionadas, consulte a função da API SQLExtendedFetch ODBC em Windows SDK.
Exceções
Esse método pode lançar exceções do tipo CDBException* e CMemoryException*.
Exemplo
// 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();
Requisitos
Cabeçalho: afxdb.h