Conjunto de registros: Marcadores y posiciones absolutas (ODBC)
Este tema es aplicable a las clases ODBC de MFC.
Al navegar por un conjunto de registros, a menudo es necesaria una forma de regresar a un registro determinado. El marcador y la posición absoluta de un registro proporcionan dos métodos para tal fin.
En este tema se explica:
Cómo usar los marcadores.
Cómo establecer el registro actual usando posiciones absolutas.
Marcadores en ODBC de MFC
Un marcador identifica de forma exclusiva a un registro. Al navegar por un conjunto de registros, no siempre se puede confiar en la posición absoluta de un registro, dado que éstos pueden eliminarse del conjunto de registros. La forma más segura de conservar la posición de un registro es utilizar su correspondiente marcador. La clase CRecordset proporciona funciones miembro para:
Obtener el marcador del registro actual, para que se pueda guardar en una variable (GetBookmark).
Desplazarse con rapidez a un registro dado especificando su marcador, guardado previamente en una variable (SetBookmark).
El siguiente ejemplo muestra cómo utilizar dichas funciones miembro para marcar el registro actual y regresar más tarde al mismo:
// rs is a CRecordset or
// CRecordset-derived object
CDBVariant varRecordToReturnTo;
rs.GetBookmark( varRecordToReturnTo );
// More code in which you
// move to other records
rs.SetBookmark( varRecordToReturnTo );
No es necesario extraer el tipo de datos subyacente del objeto CDBVariant Class. Asigne valor mediante GetBookmark y regrese al marcador con SetBookmark.
Nota
Según el controlador ODBC y el tipo de conjunto de registros, puede que no se admita el uso de marcadores. Se puede determinar con facilidad si se admiten los marcadores llamando a CRecordset::CanBookmark. Aun más, si se admite el uso de marcadores, se deben elegir explícitamente para implementarlos especificando la opción CRecordset::useBookmarks en la función miembro CRecordset::Open. También se debe comprobar la persistencia de los marcadores después de ciertas operaciones con conjuntos de registros. Por ejemplo, si se ejecuta Requery en un conjunto de registros, puede que los marcadores ya no sean válidos. Llame a CDatabase::GetBookmarkPersistence para comprobar si puede llamar sin ningún riesgo a SetBookmark.
Posiciones absolutas en ODBC de MFC
Además de los marcadores, la clase CRecordset permite establecer el registro actual especificando una posición ordinal. Esto se denomina colocación absoluta.
Nota
La colocación absoluta no está disponible en conjuntos de registros sólo hacia delante. Para obtener más información sobre conjuntos de registros solo hacia delante, vea Conjunto de registros (ODBC).
Para mover el puntero de registro actual mediante la posición absoluta, haga una llamada a CRecordset::SetAbsolutePosition. Al pasar un valor a SetAbsolutePosition, el registro correspondiente a esa posición ordinal se convierte en el registro actual.
Nota
La posición absoluta de un registro no es potencialmente fiable. Si el usuario elimina registros del conjunto de registros, cambia la posición ordinal de los registros posteriores. Los marcadores son el método recomendado para mover el registro actual. Para obtener más información, vea Marcadores en ODBC de MFC.
Para obtener más información sobre navegación en conjuntos de registros, vea Conjunto de registros: Desplazamiento (ODBC).