Zestaw rekordów: zakładki i położenia bezwzględne (ODBC)
Ten temat dotyczy klas MFC ODBC.
Podczas nawigowania po zestawie rekordów często potrzebny jest sposób powrotu do określonego rekordu. Zakładka rekordu i pozycja bezwzględna zapewniają dwie takie metody.
W tym temacie opisano:
Zakładki w MFC ODBC
Zakładka jednoznacznie identyfikuje rekord. Podczas przechodzenia przez zestaw rekordów nie zawsze można polegać na bezwzględnej pozycji rekordu, ponieważ rekordy można usunąć z zestawu rekordów. Niezawodnym sposobem śledzenia pozycji rekordu jest użycie jego zakładki. Klasa CRecordset
dostarcza funkcje składowe dla:
Pobranie zakładki bieżącego rekordu w celu zapisania go w zmiennej (GetBookmark).
Szybkie przejście do danego rekordu przez określenie zakładki zapisanej wcześniej w zmiennej (SetBookmark).
W poniższym przykładzie pokazano, jak używać tych funkcji składowych do oznaczania bieżącego rekordu i późniejszego powrotu do niego:
// 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 );
Nie trzeba wyodrębniać bazowego typu danych z obiektu KLASA CDBVariant. Przypisz wartość i GetBookmark
wróć do tej zakładki za pomocą polecenia SetBookmark
.
Uwaga
W zależności od typu sterownika ODBC i zestawu rekordów zakładki mogą nie być obsługiwane. Możesz łatwo określić, czy zakładki są obsługiwane przez wywołanie CRecordset ::CanBookmark. Ponadto, jeśli zakładki są obsługiwane, należy jawnie wybrać ich zaimplementowanie, określając CRecordset::useBookmarks
opcję w funkcji CRecordset::Open elementu członkowskiego. Należy również sprawdzić trwałość zakładek po niektórych operacjach zestawu rekordów. Jeśli na przykład Requery
zestaw rekordów zakładki nie będą już prawidłowe. Wywołaj metodę CDatabase::GetBookmarkPersistence , aby sprawdzić, czy można bezpiecznie wywołać metodę SetBookmark
.
Pozycje bezwzględne w MFC ODBC
Oprócz zakładek klasa CRecordset
umożliwia ustawienie bieżącego rekordu przez określenie położenia porządkowego. Jest to nazywane pozycjonowaniem bezwzględnym.
Uwaga
Pozycjonowanie bezwzględne nie jest dostępne w zestawach rekordów tylko do przodu. Aby uzyskać więcej informacji na temat zestawów rekordów tylko do przekazywania, zobacz Zestaw rekordów (ODBC).
Aby przenieść bieżący wskaźnik rekordu przy użyciu pozycji bezwzględnej, wywołaj metodę CRecordset::SetAbsolutePosition. Gdy przekazujesz wartość do SetAbsolutePosition
, rekord odpowiadający tej pozycji porządkowej staje się bieżącym rekordem.
Uwaga
Bezwzględna pozycja rekordu jest potencjalnie zawodna. Jeśli użytkownik usunie rekordy z zestawu rekordów, pozycja porządkowa każdego kolejnego rekordu ulegnie zmianie. Zakładki to zalecana metoda przenoszenia bieżącego rekordu. Aby uzyskać więcej informacji, zobacz Zakładki w MFC ODBC.
Aby uzyskać więcej informacji na temat nawigacji zestawu rekordów, zobacz Zestaw rekordów: Przewijanie (ODBC).