Conjunto de registros: Marcadores y posiciones absolutas (ODBC)
Este tema es aplicable a las clases ODBC de MFC.
Al desplazarse por un conjunto de registros, a menudo necesita una manera de volver a un registro determinado. El marcador y la posición absoluta de un registro proporcionan dos métodos de este tipo.
En este tema se explica:
Marcadores en ODBC de MFC
Un marcador identifica de forma única un registro. Cuando se desplaza por un conjunto de registros, no siempre puede confiar en la posición absoluta de un registro porque los registros se pueden eliminar del conjunto de registros. La manera confiable de realizar un seguimiento de la posición de un registro es usar su marcador. La clase CRecordset
proporciona funciones miembro para:
Obtener el marcador del registro actual, de forma que puede guardarlo en una variable (GetBookmark).
Moverse rápidamente a un registro determinado mediante la especificación de su marcador, que guardó anteriormente en una variable (SetBookmark).
En el ejemplo siguiente se muestra cómo usar estas funciones miembro para marcar el registro actual y volver a él más adelante:
// 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 el valor con GetBookmark
y vuelva a ese marcador con SetBookmark
.
Nota:
Según el tipo de conjunto de registros y el controlador ODBC, es posible que no se admita marcadores. Puede determinar fácilmente si se admiten marcadores llamando a CRecordset::CanBookmark. Además, si se admiten marcadores, debe elegir explícitamente implementarlos especificando la opción CRecordset::useBookmarks
en la función miembro CRecordset::Open. También debe comprobar la persistencia de los marcadores después de determinadas operaciones del conjunto de registros. Por ejemplo, si usa Requery
con un conjunto de registros, puede que los marcadores ya no sean válidos. Llame a CDatabase::GetBookmarkPersistence para comprobar si puede llamar de forma segura 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. A esto se le conoce como posicionamiento absoluto.
Nota:
El posicionamiento absoluto no está disponible en conjuntos de registros de solo avance. Para más información sobre los conjuntos de registros de solo avance, consulte Conjunto de registros (ODBC).
Para mover el puntero de registro actual mediante la posición absoluta, llame a CRecordset::SetAbsolutePosition. Cuando se pasa 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 es potencialmente poco confiable. Si el usuario elimina los registros del conjunto de registros, cambia la posición ordinal de los registros posteriores. Los marcadores son el método recomendado de mover el registro actual. Para más información, consulte Marcadores en ODBC de MFC.
Para más información sobre la navegación por el conjunto de registros, consulte Conjunto de registros: desplazamiento (ODBC).