資料錄集:捲動 (ODBC)
本主題適用於 MFC ODBC 類別。
開啟記錄集之後,您必須存取記錄來顯示值、執行計算、產生報表等等。 捲動可讓您從記錄移至記錄集內的記錄。
本主題將說明:
如何在記錄集中 從一筆記錄捲動到另一筆記錄。
從一筆記錄捲動到另一筆記錄
類別 CRecordset
提供 Move
在記錄集內捲動的成員函式。 這些函式會依資料列集移動目前的記錄。 如果您已實作大量資料列擷取, Move
作業會依資料列集的大小重新置放記錄集。 如果您尚未實作大量資料列擷取,則每次呼叫函 Move
式會將記錄集重新置放一筆記錄。 如需大量資料列擷取的詳細資訊,請參閱 記錄集:大量擷取記錄 (ODBC) 。
注意
移動記錄集時,可能不會略過已刪除的記錄。 如需詳細資訊,請參閱 IsDeleted 成員函式。
除了函式 Move
之外, CRecordset
還提供成員函式來檢查您是否已經捲動過記錄集的結尾或前面。
若要判斷記錄集中是否可以捲動,請呼叫 CanScroll
成員函式。
捲動
轉寄一筆記錄或一個資料列集:呼叫 MoveNext 成員函式。
向後一筆記錄或一個資料列集:呼叫 MovePrev 成員函式。
在記錄集中的第一筆記錄:呼叫 MoveFirst 成員函式。
在記錄集或最後一個資料列集的最後一筆記錄:呼叫 MoveLast 成員函式。
相對於目前位置的 N 筆記錄:呼叫 Move 成員函式。
測試記錄集的結尾或開頭
下列程式碼範例會在任一方向捲動時,使用 IsBOF
和 IsEOF
來偵測記錄集的限制。
// Open a recordset; first record is current
CCustSet rsCustSet( NULL );
rsCustSet.Open( );
if( rsCustSet.IsBOF( ) )
return;
// The recordset is empty
// Scroll to the end of the recordset, past
// the last record, so no record is current
while ( !rsCustSet.IsEOF( ) )
rsCustSet.MoveNext( );
// Move to the last record
rsCustSet.MoveLast( );
// Scroll to beginning of the recordset, before
// the first record, so no record is current
while( !rsCustSet.IsBOF( ) )
rsCustSet.MovePrev( );
// First record is current again
rsCustSet.MoveFirst( );
IsEOF
如果記錄集位於最後一筆記錄之後,則傳回非零值。 IsBOF
如果記錄集位於第一筆記錄之前,則會傳回非零值(在所有記錄之前)。 不論是哪一種情況,都沒有要運作的目前記錄。 如果您呼叫 MovePrev
的 時機 IsBOF
已經為 TRUE,或當 為 TRUE 時 IsEOF
呼叫 MoveNext
,則架構會 CDBException
擲回 。 您也可以使用 IsBOF
和 IsEOF
來檢查空的記錄集。
如需記錄集導覽的詳細資訊,請參閱 Recordset:Bookmarks 和 Absolute Positions (ODBC) 。
支援捲動時
如同原本設計,SQL 只提供向前捲動,但 ODBC 會擴充捲動功能。 捲動的可用支援層級取決於應用程式所使用的 ODBC 驅動程式、驅動程式的 ODBC API 一致性層級,以及 ODBC 資料指標程式庫是否載入記憶體中。 如需詳細資訊,請參閱 ODBC 和 ODBC:ODBC 資料指標程式庫 。
提示
您可以控制是否使用資料指標程式庫。 請參閱 CDatabase::Open 的 bUseCursorLib 和 dwOptions 參數 。
注意
不同于 MFC DAO 類別,MFC ODBC 類別不會提供一組 Find
函式來尋找符合指定準則的下一筆(或上一筆)記錄。
另請參閱
資料錄集 (ODBC)
CRecordset::CanScroll
CRecordset::CheckRowsetError
資料錄集:篩選資料錄 (ODBC)