词条 | CRecordset::Move |
释义 | CRecordset::Move virtual void Move( long nRows, WORD wFetchType = SQL_FETCH_RELATIVE ); throw( CDBException, CMemoryException ); 参数: nRows 要向前或向后移动的行数。正值表示向前移动,直至移动到记录集的尾部。负值表示向后移动,直至移动到开始处。 wFetchType 确定Move将要获取的行集。其细节参见说明部分。 说明: 此成员函数用来在记录集中向前或向后移动当前记录指针。如果你给nRows传递一个为0的值,则Move刷新当前记录;Move将终止当前的AddNew或Edit模式,并且将把当前记录的值恢复到调用AddNew或Edit之前的值。 注意: 当在记录集中移动时,不能略过被删除的记录。有关的细节可以参见IsDeleted成员函数。 Move用行集来定位记录集。根据传递给nRows和wFetchType的值,Move检取相应的行集,然后将此行集中的第一个记录作为当前记录。如果你还没有实现成组行检取,则行集的大小总是1。当检取一个行集时,Move直接调用CheckRowsetError成员函数来处理检取中发生的任何错误。 Move与其他的CRecordset成员函数是等同的,这得看你所传递的值。尤其是,数值WFetchType指明了更为直观的成员函数,对于移动当前记录来说,可能更喜欢使用该方法。 下面的表列出了wFetchType可能的取值,Move根据wFectchType和nRows将获取的行集,和其它对应于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行。 SQL_FETCH_BOOKMARK 行集开始于书签值与nRows一致的行 SetBookmark注意: 对于只向前的记录集,Move只在wFetchType的值为SQL_FETCH_NEXT才有效。 警告: 如果记录集没有记录则调用Move将抛出一个异常。要确定记录集是否有记录,可以调用IsBOF和IsEOF。 如果你已经滚动过了记录集的开始或结尾(IsBOF或IsEOF返回非零值),则调用Move函数将有可能抛出一个CDBException。例如,如果IsEOF返回非零值而IsBOF没有返回非零值,则MoveNext将抛出一个异常,而MovePrev就不会抛出异常。 如果你在当前记录被更新或增加时调用Move,则更新的值将丢失,并且不会给出警告。 有关的信息,参见“ODBC SDK程序员参考”中的ODBC API函数SQLExtendedFetch。 示例: // rs是一个CRecordset或一个CRecordset派生对象。 // 将行集的大小改变为5 rs.SetRowsetSize( 5 ); // 移动到记录集中的第一个记录 rs.MoveFirst( ); // 移动到第六个记录 rs.Move( 5 ); // 用其它相当的方法移动到第六个记录 // rs.Move( 6, SQL_FETCH_ABSOLUTE ); // rs.SetAbsolutePosition( 6 ); // 在这种情况下,第六个记录是下一个行集的第一个记录。 // 所以下面的方法也是相当的。 // rs.Move( 1, SQL_FETCH_NEXT ); // rs.MoveNext( ); |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。