次の方法で共有


CRecordset::Move

レコードセット内の現在のレコード ポインターを、転送名または後方に移動します。

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

パラメーター

  • nRows
    進み具合列番号または後方にします。正の値はレコードセットの終了に向けて前方を実行します。負の値は、先頭に向かって戻ります。

  • wFetchType
    [移動] 行セットがフェッチを決定します。詳細については、「解説」を参照してください。

解説

nRowsの値 0 を渡した場合、[移動] によっては現在のレコードを更新します; [移動]AddNew[編集] が呼び出される前に [編集] の現在の AddNew またはモードを終了し、現在のレコードの値を復元します。

[!メモ]

レコードセット内を移動する場合、削除したレコードをバイパスすることはできません。詳細については、CRecordset::IsDeleted を参照してください。skipDeletedRecords のオプション セットとの CRecordset を開くと、nRows のパラメーターが 0 の場合 [移動] の assert。この動作は、同じデータを使用して他のクライアント アプリケーションで削除される行の更新を防ぎます。skipDeletedRecordsについては、[開く] の dwOption のパラメーターを参照してください。

[移動] は行セットに、レコードセットの位置を変更します。nRows と wFetchTypeの値に基づいて、[移動] は適切な行セットがフェッチされ、その行セットの先頭のレコードが現在のレコードになります。バルク行フェッチを実装していない場合、行セットのサイズは常に 1.です。行セットがフェッチと、[移動] は直接エラーを処理するに CheckRowsetError のメンバー関数を呼び出します。フェッチになります。

値によって、他の [移動] です CRecordset のメンバー関数と同じ渡します。特に、wFetchType の値が現在のレコードを実行するための、より直感的頻繁に適した方法でメンバー関数を示す場合があります。

次の表は wFetchTypeに対応する [移動] が wFetchType と 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

[!メモ]

前方スクロール専用レコードセットでは、[移動] は wFetchTypeの SQL_FETCH_NEXT の値でのみ有効です。

Caution メモ注意

[移動] を呼び出すと、レコードセットのレコードがない場合、は例外をスローします。レコードセットのレコードがあるかどうかを確認するには、IsBOFIsEOFを呼び出します。

[!メモ]

レコードセットの先頭または末尾を超えてIsBOF (または IsEOF は、ゼロを返します) スクロールする場合は、[移動] 関数を呼び出す必要があります CDBExceptionをスローします。たとえば IsEOF がゼロ以外の値を返し、IsBOF が、MoveNext 例外をスローしますが、MovePrev は。

[!メモ]

現在のレコードが更新されているか、追加する [移動] を呼び出すと、更新は警告なしに失われます。

レコードセットの移動に関する詳細については、" " レコードセット: スクロール (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