Conjunto de registros: Desplazarse (ODBC)

Este tema es aplicable a las clases ODBC de MFC.

Después de abrir un conjunto de registros, se debe acceder a los registros para mostrar valores, realizar cálculos, generar informes, etc. El desplazamiento permite pasar de un registro a otro en el conjunto de registros.

En este tema se explica:

Desplazamiento de un registro a otro

La clase CRecordset proporciona al miembro Move funciones para desplazarse dentro de un conjunto de registros. Estas funciones mueven el registro actual por conjuntos de filas. Si ha implementado la captura masiva de filas, una operación Move cambia la posición del conjunto de registros por el tamaño del conjunto de filas. Si ha implementado una captura masiva de filas, una llamada a una función Move cambia la posición del conjunto de registros de uno en uno. Para más información sobre la obtención masiva de filas, vea Conjunto de registros: obtener registros de forma masiva (ODBC).

Nota:

Al desplazarse por un conjunto de registros, es posible que no se omitan los registros eliminados. Para más información, vea la función miembro IsDeleted.

Además de las funciones Move, CRecordset proporciona funciones miembro para comprobar si se ha desplazado más allá del final o antes del principio del conjunto de registros.

Para determinar si puede desplazarse en el conjunto de registros, llame a la función miembro CanScroll.

Para desplazarse

  1. Un registro o un conjunto de filas hacia delante: llame a la función miembro MoveNext.

  2. Un registro o un conjunto de filas hacia atrás: llame a la función miembro MovePrev.

  3. Al primer registro del conjunto de registros: llame a la función miembro MoveFirst.

  4. Al último registro del conjunto de registros o al último conjunto de filas: llame a la función miembro MoveLast.

  5. N registros relativos a la posición actual: llame a la función miembro Move.

Para probar el final o el principio del conjunto de registros

  1. ¿Se ha desplazado más allá del último registro? Llame a la función miembro IsEOF.

  2. ¿Se ha desplazado más allá del primer registro (retrocediendo)? Llame a la función miembro IsBOF.

En el ejemplo de código siguiente se usan IsBOF y IsEOF para detectar los límites de un conjunto de registros al desplazarse en cualquier dirección.

// 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 devuelve un valor distinto de cero si el conjunto de registros se coloca más allá del último registro. IsBOF devuelve un valor distinto de cero si el conjunto de registros se coloca más allá del primer registro (antes de todos los registros). En cualquier caso, no hay ningún registro en el que operar actualmente. Si llama a MovePrev cuando IsBOF ya es TRUE o a MoveNextcuando IsEOF ya es TRUE, el marco inicia una excepción CDBException. También puede usar IsBOF y IsEOF para comprobar si hay algún conjunto de registros vacío.

Para más información sobre el desplazamiento por el conjunto de registros, consulte Conjunto de registros: marcadores y posiciones absolutas (ODBC).

Cuando se admite el desplazamiento

En su diseño original, SQL solo permitía el desplazamiento hacia delante, pero ODBC amplía las funcionalidades de desplazamiento. El nivel disponible de compatibilidad con el desplazamiento depende de los controladores ODBC que use la aplicación, del nivel de conformidad de la API ODBC del controlador y de si la biblioteca de cursores de ODBC está cargada en memoria. Para más información, consulte ODBC y ODBC: biblioteca de cursores de ODBC.

Sugerencia

Puede controlar si se usa la biblioteca de cursores. Consulte los parámetros bUseCursorLib y dwOptions en CDatabase::Open.

Nota:

A diferencia de las clases DAO de MFC, las clases ODBC de MFC no proporcionan un conjunto de Find funciones para buscar el siguiente registro (o el anterior) que cumpla los criterios especificados.

Consulte también

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