Поделиться через


Набор записей. Закладки и абсолютное позиционирование (ODBC)

Обновлен: Ноябрь 2007

В этом разделе приведены сведения, относящиеся к классам ODBC библиотеки MFC.

При перемещении по набору записей часто необходимо иметь возможность вернуться к определенной записи. Для этого существуют два метода: использование закладок и абсолютного позиционирования.

В данном разделе рассматриваются следующие вопросы.

  • Способы использования закладок.

  • Способы задания текущей записи при помощи абсолютного позиционирования.

Использование закладок для ODBC в библиотеке MFC

Закладка уникально идентифицирует запись. При перемещении по набору записей нельзя всегда полагаться на абсолютную позицию записи, поскольку записи могут быть удалены из набора. Надежным способом отслеживания позиции записи является использование закладок. Класс CRecordset предоставляет функции-члены для выполнения следующих задач.

  • Установка закладки для текущей записи и сохранение этой закладки в переменной (GetBookmark).

  • Быстрое перемещение к определенной записи с помощью указания ее закладки, ранее сохраненной в переменной (SetBookmark).

В следующем примере показаны способы использования этих функций-членов для пометки текущей записи и последующего возврата к ней.

// 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 );

Нет необходимости извлекать базовый тип данных из объекта CDBVariant Class. Следует задать значение закладки с помощью функции GetBookmark, а затем вернуться к закладке с помощью функции SetBookmark.

3sws4a10.alert_note(ru-ru,VS.90).gifПримечание.

Закладки могут не поддерживаться при использовании определенных драйверов и типов наборов записей. Определить, поддерживаются ли закладки, можно с помощью вызова функции CRecordset::CanBookmark. Кроме того, если закладки поддерживаются, необходимо явно реализовывать их, указывая параметр CRecordset::useBookmarks в функции CRecordset::Open. Также следует проверять сохранность закладок после выполнения определенных операций с наборами записей. Например, если применить к набору записей метод Requery (повторный запрос), закладки могут не сохраниться. Следует вызвать функцию CDatabase::GetBookmarkPersistence, чтобы проверить, имеется ли возможность безопасного вызова функции SetBookmark.

Абсолютное позиционирование ODBC в библиотеке MFC

Помимо закладок класс CRecordset позволяет использовать текущую запись, указав ее порядковый номер. Данный способ называется абсолютным позиционированием.

3sws4a10.alert_note(ru-ru,VS.90).gifПримечание.

Абсолютное позиционирование недоступно для наборов записей с последовательным доступом. Дополнительные сведения о наборах записей с последовательным доступом см. в разделе Набор записей (ODBC).

Чтобы переместить указатель текущей записи с помощью ее абсолютной позиции, следует вызвать функцию CRecordset::SetAbsolutePosition. При передаче значения в функцию SetAbsolutePosition запись, соответствующая указанному порядковому номеру, становится текущей.

3sws4a10.alert_note(ru-ru,VS.90).gifПримечание.

Абсолютное позиционирование записи может оказаться потенциально ненадежным. Если пользователь удалит записи из набора, порядковый номер всех последующих записей изменится. Для перемещения к текущей записи рекомендуется использовать закладки. Дополнительные сведения см. в разделе Использование закладок для ODBC в библиотеке MFC.

Дополнительные сведения о перемещении по набору записей см. в разделе Набор записей. Прокрутка (ODBC).

См. также

Основные понятия

Набор записей (ODBC)