记录集:书签和绝对位置 (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)。