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 被忽略。 |
|
SQL_FETCH_PRIOR |
上一個資料列集; nRows 被忽略。 |
|
SQL_FETCH_FIRST |
在資料錄集的第一個資料列集; nRows 被忽略。 |
|
SQL_FETCH_LAST |
在資料錄集的最後完成資料列集; nRows 被忽略。 |
|
SQL_FETCH_ABSOLUTE |
如果 nRows > 0 開始, nRows 下一列順向資料錄集。 如果 nRows < 0 開始,從資料錄集尾端的資料列集 nRows 資料列。 如果 nRows = 0,開頭 Archive (BOF) 情況則傳回。 |
|
SQL_FETCH_BOOKMARK |
開始書籤值對應至 nRows的下一列。 |
注意事項 |
---|
如需順向資料錄集, 移動 才有效。 SQL_FETCH_NEXT 的值 wFetchType的。 |
注意事項 |
---|
如果您有超過資料錄集的開頭或結尾 (IsBOF 或 IsEOF 傳回非零),呼叫 移動 函式可能會擲回 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