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
Un registro o un conjunto de filas hacia delante: llame a la función miembro MoveNext.
Un registro o un conjunto de filas hacia atrás: llame a la función miembro MovePrev.
Al primer registro del conjunto de registros: llame a la función miembro MoveFirst.
Al último registro del conjunto de registros o al último conjunto de filas: llame a la función miembro MoveLast.
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
¿Se ha desplazado más allá del último registro? Llame a la función miembro IsEOF.
¿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 MoveNext
cuando 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)