记录集:书签和绝对位置 (ODBC)

本主题适用于 MFC ODBC 类。

浏览记录集时,你通常需要一种返回特定记录的方法。 记录的书签和绝对位置提供了两种这样的方法。

本主题介绍:

MFC ODBC 中的书签

书签唯一地标识一条记录。 浏览记录集时,不能总是依赖记录的绝对位置,因为可以从记录集中删除记录。 跟踪记录位置的可靠方法是使用记录的书签。 类 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::Open 成员函数中指定 CRecordset::useBookmarks 选项来明确选择实现它们。 你还应该在某些记录集操作之后检查书签的持久性。 例如,如果你对一个记录集执行 Requery,书签可能不再有效。 调用 CDatabase::GetBookmarkPersistence 以检查你是否可以安全地调用 SetBookmark

MFC ODBC 中的绝对位置

除了书签之外,类 CRecordset 还允许你通过指定序数位置来设置当前记录。 这称为绝对定位。

注意

绝对定位在只进记录集上不可用。 有关只进记录集的详细信息,请参阅记录集 (ODBC)

要使用绝对位置移动当前记录指针,请调用 CRecordset::SetAbsolutePosition。 当你将值传递给 SetAbsolutePosition 时,与该序号位置对应的记录将成为当前记录。

注意

记录的绝对位置可能不可靠。 如果用户从记录集中删除记录,任何后续记录的序号位置都会更改。 要移动当前记录,推荐方法是书签。 有关详细信息,请参阅 MFC ODBC 中的书签

有关记录集导航的详细信息,请参阅记录集:滚动 (ODBC)

另请参阅

记录集 (ODBC)