CRecordset::Move

向前或向后移动到记录集,要么中的当前记录指针。

virtual void Move( 
   long nRows, 
   WORD wFetchType = SQL_FETCH_RELATIVE  
);

参数

  • nRows
    前滚和后滚的行数。 正值紧接着,向记录集的结尾。 负值向后移动,朝开头。

  • wFetchType
    确定 Move 将获取行集合。 有关详细信息,请参见备注。

备注

如果通过值为0 nRows的,Move 刷新当前记录;,在 AddNewEdit 调用之前,Move 将终止所有当前 AddNewEdit 模式和还原当前记录的值。

备注

在记录集移动时,不能跳过已删除的记录。请参见 CRecordset::IsDeleted 有关更多信息。在打开包含设置的 skipDeletedRecords 选项的 CRecordsetMove 断言 nRows 参数是否为0。此行为阻止使用相同的数据,由其他客户端应用程序中删除行的刷新。为 skipDeletedRecords的声明参见。打开 的 dwOption 参数。

Move 按行集合重新定位记录集。 基于 nRows 和 wFetchType的值,Move 获取相应的行集合然后在该行集合的第一条记录当前记录。 如果尚未实现批量取行,则行集合大小始终为1。 当获取行集合时,Move 直接调用 CheckRowsetError 成员函数来处理所有错误来源于该获取。

根据值通过,Move 与其他 CRecordset 成员函数等效。 具体而言,wFetchType 的值可能指示是直观和通常移动当前记录的首选方法的成员函数。

下表列出了 Move 将获取基于 wFetchType 和 nRows的 wFetchType、行集合和所有等效的成员函数的可能值与 wFetchType对应。

wFetchType

将获取的行集合

等效的成员函数

SQL_FETCH_RELATIVE (默认值)

开始从第一行的行集合 nRows 行在当前集合。

 

SQL_FETCH_NEXT

下行集合; nRows 被忽略。

MoveNext

SQL_FETCH_PRIOR

上面的行集合; nRows 被忽略。

MovePrev

SQL_FETCH_FIRST

在记录集的第一行集合; nRows 被忽略。

MoveFirst

SQL_FETCH_LAST

在记录集中的最后一个完全行集合; nRows 被忽略。

MoveLast

SQL_FETCH_ABSOLUTE

如果 nRows > 0开始,nRows 行的行集合从初始记录集。 如果 nRows < 0开始,从记录集的结尾的行集合 nRows 行。 如果 nRows = 0,开头文件(BOF)条件然后返回。

SetAbsolutePosition

SQL_FETCH_BOOKMARK

开始在书签值对应于 nRows行的行集合。

SetBookmark

备注

对于仅向前记录集,MoveSQL_FETCH_NEXT 的值才有效 wFetchType的。

警告

如果记录集没有记录,调用 Move 引发异常。若要确定记录集是否有任何记录,调用 IsBOFIsEOF

备注

如果已将通过记录集的开始或结束(IsBOFIsEOF 返回非零)调用,Move 功能可能会引发 CDBException。例如,因此,如果 IsEOF 返回非零,并 IsBOF 不,然后 MoveNext 将引发异常,但是,MovePrev 不会。

备注

如果调用 Move,且当前记录被更新或添加时,更新丢失,而无需警告。

有关记录集导航的更多信息,请参见位于 记录集:滚动(odbc)记录集:书签和绝对位置(odbc)。 有关批量取行的更多信息,请参见文章 记录集:获取记录(odbc)。 有关相关信息,请参见。Windows SDK的ODBC API函数 SQLExtendedFetch

异常

此方法会引发类型 CDBException* 和 **CMemoryException***的异常。

示例

// rs is a CRecordset or a CRecordset-derived object

// Change the rowset size to 5
rs.SetRowsetSize(5);

// Open the recordset
rs.Open(CRecordset::dynaset, NULL, CRecordset::useMultiRowFetch);

// Move to the first record in the recordset
rs.MoveFirst();

// Move to the sixth record
rs.Move(5);
// Other equivalent ways to move to the sixth record:
rs.Move(6, SQL_FETCH_ABSOLUTE);
rs.SetAbsolutePosition(6);
// In this case, the sixth record is the first record in the next rowset,
// so the following are also equivalent:
rs.MoveFirst();
rs.Move(1, SQL_FETCH_NEXT);

rs.MoveFirst();
rs.MoveNext();

要求

Header: afxdb.h

请参见

参考

CRecordset选件类

层次结构图

CRecordset::MoveNext

CRecordset::MovePrev

CRecordset::MoveFirst

CRecordset::MoveLast

CRecordset::SetAbsolutePosition

CRecordset::SetBookmark

CRecordset::IsBOF

CRecordset::IsEOF

CRecordset::CheckRowsetError