Набор записей. Закладки и абсолютное позиционирование (ODBC)
Этот раздел относится к классам 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. Назначьте значение и GetBookmark
вернитесь в эту закладку.SetBookmark
Примечание.
В зависимости от типа драйвера ODBC и набора записей закладки могут не поддерживаться. Вы можете легко определить, поддерживаются ли закладки, вызвав CRecordset::CanBookmark. Кроме того, если поддерживаются закладки, необходимо явно выбрать их реализацию, указав CRecordset::useBookmarks
параметр в функции CRecordset::Open member. Также следует проверить сохраняемость закладок после определенных операций набора записей. Например, если вы Requery
используете набор записей, закладки могут перестать быть допустимыми. Вызовите CDatabase::GetBookmarkPersistence , чтобы проверить, можно ли безопасно вызывать SetBookmark
.
Абсолютные позиции в ODBC MFC
Кроме закладок, класс CRecordset
позволяет задать текущую запись, указав порядковое положение. Это называется абсолютным положением.
Примечание.
Абсолютная позиция недоступна в наборах записей только для пересылки. Дополнительные сведения о наборах записей только для пересылки см. в разделе Recordset (ODBC).
Чтобы переместить текущий указатель записи с помощью абсолютной позиции, вызовите CRecordset::SetAbsolutePosition. При передаче значения SetAbsolutePosition
в запись, соответствующая этой порядковой позиции, становится текущей записью.
Примечание.
Абсолютная позиция записи потенциально ненадежна. Если пользователь удаляет записи из набора записей, порядковый номер любого последующего изменения записи. Закладки — это рекомендуемый метод перемещения текущей записи. Дополнительные сведения см. в разделе "Закладки" в ODBC MFC.
Дополнительные сведения о навигации по набору записей см. в разделе Recordset: Scrolling (ODBC).