次の方法で共有


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 のパラメーターを参照してください。  

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

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

次の表は wFetchTypeに対応する [移動]wFetchTypenRowsに基づいてフェッチと、同等のメンバー関数の一覧 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

注意

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

注意

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

注意

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

注意

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

レコードセットの移動に関する詳細については、" " レコードセット: スクロール (ODBC)レコードセット: ブックマークと絶対位置 (ODBC)を参照してください。  バルク行フェッチに関する詳細については、" " レコードセット: フェッチ サイズのレコードを (ODBC)を参照してください。  関連情報については、Windows SDKの ODBC API 関数 SQLExtendedFetch を参照してください。  

例外

Exception

Condition

このメソッドは、型 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