共用方式為


CRecordset::Move

向前和向後捲動至資料錄集,為內的目前資料錄指標。

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

參數

  • nRows
    向前和向後捲動的資料列數目。 正值表示向前移動,依據資料錄集的結尾。 負值會向後移動,依據開頭。

  • wFetchType
    判斷 移動 將擷取的資料列集。 如需詳細資訊,請參閱"備註"。

備註

如果您將值 0 nRows的, 移動 重新整理目前的記錄,,在 AddNew編輯 呼叫之前, 移動 會關閉所有目前 AddNew編輯 模式和還原目前資料錄的值。

注意事項注意事項

當您在資料錄集內移動,您不能略過已刪除的資料錄。請參閱 CRecordset::IsDeleted 以取得詳細資訊。當您開啟 skipDeletedRecords 選取集合中的 CRecordset移動 Assert nRows 參數是否為 0。這個行為讓使用相同的資料,讓其他用戶端應用程式刪除資料列的更新。提供 skipDeletedRecords的說明請參閱在 開啟 的 dwOption 參數。

移動 是依資料列集 (Rowset) 重新放置資料錄集。 以 nRows 和 wFetchType的值, 移動 擷取適當的資料列集然後認可該資料列集的第一筆資料錄的目前資料錄。 如果您未實作大量資料列擷取,則資料列集大小固定為 1。 在擷取資料時, 移動 直接呼叫 CheckRowsetError 成員函式處理任何錯誤因這個擷取。

根據您所傳入值, 移動 與其他 CRecordset 成員函式。 特別是, wFetchType 的值可能會較容易瞭解並經常移動目前資料錄的慣用方法的成員函式。

下表列出 移動 會擷取以 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,開頭 Archive (BOF) 情況則傳回。

SetAbsolutePosition

SQL_FETCH_BOOKMARK

開始書籤值對應至 nRows的下一列。

SetBookmark

注意事項注意事項

如需順向資料錄集, 移動 才有效。 SQL_FETCH_NEXT 的值 wFetchType的。

警告

如果資料錄集沒有資料錄 移動 ,呼叫會擲回例外狀況。若要判斷資料錄集是否包含任何資料錄,請呼叫 IsBOFIsEOF

注意事項注意事項

如果您有超過資料錄集的開頭或結尾 (IsBOFIsEOF 傳回非零),呼叫 移動 函式可能會擲回 CDBException。例如,如果 IsEOF ,傳回非零,並不 IsBOF ,然後 MoveNext 將擲回例外狀況,但 MovePrev ,則不會。

注意事項注意事項

如果您呼叫 移動 ,當目前資料錄更新或加入時,更新遺失,而不需警告。

如需資料錄巡覽的詳細資訊,請參閱 Microsoft 知識庫文件 資料錄集:捲動 (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