Conjunto de registros: Rolagem (ODBC)

Este tópico aplica-se às classes ODBC do MFC.

Depois de abrir um conjunto de registros, você precisará acessar os registros para exibir valores, fazer cálculos, gerar relatórios e assim por diante. A rolagem permite que você passe de registro para outro em seu conjunto de registros.

Este tópico explica:

Rolagem de um registro para outro

A classe CRecordset fornece as funções de membro Move para rolagem dentro de um conjunto de registros. Essas funções movem o registro atual por conjuntos de linhas. Se você implementou a busca de linhas em massa, uma operação Move reposicionará o conjunto de registros pelo tamanho do conjunto de linhas. Se você não implementou a busca de linhas em massa, uma chamada a uma função Move reposicionará o conjunto de registros, um registro por vez. Para obter mais informações sobre busca de linhas em massa, confira Conjunto de registros: buscando registros em massa (ODBC).

Observação

Ao percorrer um conjunto de registros, os registros excluídos podem não ser ignorados. Para obter mais informações, confira a função de membro IsDeleted.

Além das funções Move, o CRecordset fornece funções de membro para verificar se você passou do final ou além do início do conjunto de registros.

Para determinar se a rolagem é possível no conjunto de registros, chame a função de membro CanScroll.

Para rolar

  1. Avançar um registro ou um conjunto de linhas: chame a função de membro MoveNext.

  2. Retornar um registro ou um conjunto de linhas: chame a função de membro MovePrev.

  3. Para o primeiro registro no conjunto de registros: chame a função de membro MoveFirst.

  4. Para o último registro no conjunto de registros ou para o último conjunto de linhas: chame a função de membro MoveLast.

  5. N registros relativos à posição atual: chame a função de membro Move.

Para testar o final ou o início do conjunto de registros

  1. Você já passou do último registro? Chame a função de membro IsEOF.

  2. Você já rolou para além do primeiro registro (movendo-se para trás)? Chame a função de membro IsBOF.

O exemplo de código a seguir usa IsBOF e IsEOF para detectar os limites de um conjunto de registros ao rolar em qualquer direção.

// Open a recordset; first record is current
CCustSet rsCustSet( NULL );
rsCustSet.Open( );

if( rsCustSet.IsBOF( ) )
    return;
    // The recordset is empty

// Scroll to the end of the recordset, past
// the last record, so no record is current
while ( !rsCustSet.IsEOF( ) )
    rsCustSet.MoveNext( );

// Move to the last record
rsCustSet.MoveLast( );

// Scroll to beginning of the recordset, before
// the first record, so no record is current
while( !rsCustSet.IsBOF( ) )
    rsCustSet.MovePrev( );

// First record is current again
rsCustSet.MoveFirst( );

IsEOF retornará um valor diferente de zero se o conjunto de registros estiver posicionado após o último registro. IsBOF retornará um valor diferente de zero se o conjunto de registros estiver posicionado à frente do primeiro registro (antes de todos os registros). Em ambos os casos, não há registro atual para operar. Se você chamar MovePrev quando IsBOF já for TRUE ou chamar MoveNext quando IsEOF já for TRUE, a estrutura gerará um CDBException. Você também pode usar IsBOF e IsEOF para verificar se há um conjunto de registros vazio.

Para obter mais informações sobre a navegação no conjunto de registros, confira Conjunto de registros: indicadores e posições absolutas (ODBC).

Quando há suporte para rolagem

Como projetado originalmente, o SQL forneceu apenas a rolagem para frente, mas o ODBC estende os recursos de rolagem. O nível de suporte disponível para rolagem depende dos drivers ODBC com os quais seu aplicativo trabalha, do nível de conformidade da API ODBC do driver e se a Biblioteca de Cursores do ODBC está carregada na memória. Para obter mais informações, confira ODBC e ODBC: a biblioteca de cursores do ODBC.

Dica

Você pode controlar se a biblioteca de cursores é usada. Consulte os parâmetros bUseCursorLib e dwOptions para CDatabase::Open.

Observação

Ao contrário das classes DAO do MFC, as classes ODBC do MFC não fornecem um conjunto de funções Find para localizar o próximo registro (ou anterior) que atenda aos critérios especificados.

Confira também

Conjunto de registros (ODBC)
CRecordset::CanScroll
CRecordset::CheckRowsetError
Conjunto de registros: filtrando registros (ODBC)