CRecordset::Move

此成員函式用來在記錄集中向前或向後移動當前記錄指針。如果你給nRows傳遞一個為0的值,則Move刷新當前記錄;Move將終止當前的AddNew或Edit模式,並且將把當前記錄的值恢復到調用AddNew或Edit之前的值。

基本介紹

  • 中文名:CRecordset::Move
  • 定義:記錄集中向前或向後移動記錄指針
  • 注意:不能略過被刪除的記錄
  • 警告記錄集沒有記錄則調用Move將異常
簡介,參數,

簡介

CRecordset::Move
virtual void Move( long nRows, WORD wFetchType = SQL_FETCH_RELATIVE );
throw( CDBException, CMemoryException );

參數

nRows
要向前或向後移動的行數。正值表示向前移動,直至移動到記錄集的尾部。負值表示向後移動,直至移動到開始處。
wFetchType
確定Move將要獲取的行集。其細節參見說明部分。
當在記錄集中移動時,不能略過被刪除的記錄。有關的細節可以參見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行。如果nRows < 0,則行集從記錄集的結尾處開始nRows行。
如果nRows = 0,則返回一個BOF條件
SetAbsolutePosition
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( );

相關詞條

熱門詞條

聯絡我們