次の方法で共有


CRecordset::DoFieldExchange

(両方向に) レコードセットのフィールド データ メンバーとデータ ソース内の対応するレコード間のデータ交換に呼び出されます。実装のレコード フィールド エクスチェンジ (RFX)。

virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

パラメーター

  • pFX
    CFieldExchange オブジェクトへのポインターを返します。フレームワークは、既にフィールド エクスチェンジ操作のコンテキストを指定するには、このオブジェクトを設定することになります。

解説

バルク行フェッチが実装されていないと、フレームワークは自動的に自分のレコードセット オブジェクトのフィールド データ メンバーとデータ ソースの現在のレコードの対応する列間でデータを交換するには、このメンバー関数を呼び出します。DoFieldExchange は、レコードセットの選択の SQL ステートメントの文字列パラメーター プレースホルダーに、パラメーター データ メンバーがある場合、バインドします。

バルク行フェッチが実装されている場合、フレームワークは DoBulkFieldExchangeを呼び出します。バルク行フェッチを実装するには [開く] のメンバー関数で dwOptions のパラメーターの CRecordset::useMultiRowFetch のオプションを指定します。

[!メモ]

DoFieldExchangeCRecordsetの派生クラスを使用した場合だけです。CRecordsetからレコードセット オブジェクトを直接作成する場合は、データを取得するに GetFieldValue のメンバー関数を呼び出す必要があります。

レコード フィールド エクスチェンジ (RFX) と呼ばれるフィールドのデータの交換はいずれの方向です: レコードセット オブジェクトのフィールド データ メンバーへのデータ ソースのレコードのフィールドにとデータ ソースのレコードからレコードセット オブジェクト。

、派生レコードセット クラスの DoFieldExchange を実行するために一般的手順を実行する以外の処理は ClassWizard クラスを作成し、フィールド データ メンバーの名前とデータ型を指定することです。追加パラメーター データ メンバーを指定するか、動的にバインドする各列を処理するために ClassWizard が記述した内容に、コードを場合があります。詳細については、" " レコードセット: 動的に結合するデータ列 (ODBC)を参照してください。

ClassWizard の派生レコードセット クラスを宣言すると、ウィザードは次の例のように、の DoFieldExchange のオーバーライドを書き込み、:

void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   // Macros such as RFX_Text() and RFX_Int() are dependent on the
   // type of the member variable, not the type of the field in the database.
   // ODBC will try to automatically convert the column value to the requested type
   RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
   RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
   RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
   RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
   RFX_Long(pFX, _T("[BillingID]"), m_BillingID);

   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Param"), m_strParam);
}

RFX 関数に関する詳細については、" " フィールド エクスチェンジ関数を記録します。を参照してください。

DoFieldExchangeに関するそのほかの例および詳細については、" " フィールド エクスチェンジを記録する: RFX の動作のしくみを参照してください。RFX については、" " フィールド エクスチェンジを記録します。を参照してください。

例外

このメソッドは、型 **CDBException***の例外をスローできます。

必要条件

Header: afxdb.h

参照

関連項目

CRecordset クラス

階層図

CRecordset::m_nFields

CRecordset::m_nParams

CRecordset::DoBulkFieldExchange

CRecordset::GetFieldValue

CFieldExchange クラス

その他の技術情報

レコード フィールド エクスチェンジ (RFX) 関数