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 は無視されます。 |
|
SQL_FETCH_PRIOR |
前の行セット; nRows は無視されます。 |
|
SQL_FETCH_FIRST |
レコードセットの最初の行セット; nRows は無視されます。 |
|
SQL_FETCH_LAST |
レコードセットの最後の完全な行セット; nRows は無視されます。 |
|
SQL_FETCH_ABSOLUTE |
nRows 場合 > 0 のレコードセットの先頭から nRows の列を開始する行セット。 nRows 場合 < 0 のレコードセットの最後の nRows の列を開始する行セット。 nRows は = 0、ファイルの先頭 (BOF) の状態が返されます。 |
|
SQL_FETCH_BOOKMARK |
ブックマークの値が nRowsに対応する行で開始する行セット。 |
注意
前方スクロール専用レコードセットでは、[移動] は wFetchTypeの SQL_FETCH_NEXT の値でのみ有効です。
注意
レコードセットの先頭または末尾を超えて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