分享方式:


資料錄集:捲動 (ODBC)

本主題適用於 MFC ODBC 類別。

開啟記錄集之後,您必須存取記錄來顯示值、執行計算、產生報表等等。 捲動可讓您從記錄移至記錄集內的記錄。

本主題將說明:

從一筆記錄捲動到另一筆記錄

類別 CRecordset 提供 Move 在記錄集內捲動的成員函式。 這些函式會依資料列集移動目前的記錄。 如果您已實作大量資料列擷取, Move 作業會依資料列集的大小重新置放記錄集。 如果您尚未實作大量資料列擷取,則每次呼叫函 Move 式會將記錄集重新置放一筆記錄。 如需大量資料列擷取的詳細資訊,請參閱 記錄集:大量擷取記錄 (ODBC)

注意

移動記錄集時,可能不會略過已刪除的記錄。 如需詳細資訊,請參閱 IsDeleted 成員函式。

除了函式 Move 之外, CRecordset 還提供成員函式來檢查您是否已經捲動過記錄集的結尾或前面。

若要判斷記錄集中是否可以捲動,請呼叫 CanScroll 成員函式。

捲動

  1. 轉寄一筆記錄或一個資料列集:呼叫 MoveNext 成員函式。

  2. 向後一筆記錄或一個資料列集:呼叫 MovePrev 成員函式。

  3. 在記錄集中的第一筆記錄:呼叫 MoveFirst 成員函式。

  4. 在記錄集或最後一個資料列集的最後一筆記錄:呼叫 MoveLast 成員函式。

  5. 相對於目前位置的 N 筆記錄:呼叫 Move 成員函式。

測試記錄集的結尾或開頭

  1. 您是否捲動過最後一筆記錄? 呼叫 IsEOF 成員函式。

  2. 您是否在第一筆記錄之前捲動(向後移動)? 呼叫 IsBOF 成員函式。

下列程式碼範例會在任一方向捲動時,使用 IsBOFIsEOF 來偵測記錄集的限制。

// 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 擲回 。 您也可以使用 IsBOFIsEOF 來檢查空的記錄集。

如需記錄集導覽的詳細資訊,請參閱 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)