Conjunto de registros: indicadores e posições absolutas (ODBC)
Este tópico aplica-se às classes ODBC do MFC.
Ao navegar por um conjunto de registros, muitas vezes você precisa de uma maneira de retornar a um registro específico. O indicador de um registro e a posição absoluta fornecem dois desses métodos.
Este tópico explica:
Indicadores em ODBC do MFC
Um indicador identifica exclusivamente um registro. Quando você navega por um conjunto de registros, nem sempre pode confiar na posição absoluta de um registro porque os registros podem ser excluídos do conjunto. A maneira confiável de controlar a posição de um registro é usar seu indicador. A classe CRecordset
fornece funções de membro para:
Obter o indicador do registro atual, para que você possa salvá-lo em uma variável (GetBookmark).
Mover-se rapidamente para um determinado registro especificando seu indicador, que você salvou anteriormente em uma variável (SetBookmark).
O exemplo a seguir ilustra como usar essas funções de membro para marcar o registro atual e, posteriormente, retornar a ele:
// 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 );
Você não precisa extrair o tipo de dados subjacente do objeto classe CDBVariant. Atribua o valor com GetBookmark
e retorne a esse indicador com SetBookmark
.
Observação
Dependendo do driver ODBC e do tipo de conjunto de registros, talvez não haja suporte para indicadores. Você pode determinar facilmente se há suporte para indicadores chamando CRecordset::CanBookmark. Além disso, se houver suporte para indicadores, você deverá optar explicitamente por implementá-los especificando a opção CRecordset::useBookmarks
na função de membro CRecordset::Open. Você também deve verificar a persistência dos indicadores após determinadas operações de conjunto de registros. Por exemplo, se você Requery
um conjunto de registros, os indicadores poderão não ser mais válidos. Chame CDatabase::GetBookmarkPersistence para verificar se você pode chamar SetBookmark
com segurança.
Posições absolutas em ODBC do MFC
Além dos indicadores, a classe CRecordset
permite que você defina o registro atual especificando uma posição ordinal. Isso é chamado de posicionamento absoluto.
Observação
O posicionamento absoluto não está disponível em conjuntos de registros apenas de encaminhamento. Para saber mais sobre conjuntos de registros apenas de encaminhamento, confira Conjunto de registros (ODBC).
Para mover o ponteiro do registro atual usando a posição absoluta, chame CRecordset::SetAbsolutePosition. Quando você passa um valor para SetAbsolutePosition
, o registro correspondente a essa posição ordinal torna-se o registro atual.
Observação
A posição absoluta de um registro pode não ser confiável. Se o usuário excluir registros do conjunto, a posição ordinal dos registros seguintes mudará. Indicadores são o método recomendado para se mover para o registro atual. Para obter mais informações, confira Indicadores em ODBC do MFC.
Para obter mais informações sobre a navegação pelo conjunto de registros, confira Conjunto de registros: rolagem (ODBC).