CRecordset::DoFieldExchange
(両方向に) レコードセットのフィールド データ メンバーとデータ ソース内の対応するレコード間のデータ交換に呼び出されます。実装のレコード フィールド エクスチェンジ (RFX)。
virtual void DoFieldExchange(
CFieldExchange* pFX
);
パラメーター
- pFX
CFieldExchange オブジェクトへのポインターを返します。フレームワークは、既にフィールド エクスチェンジ操作のコンテキストを指定するには、このオブジェクトを設定することになります。
解説
バルク行フェッチが実装されていないと、フレームワークは自動的に自分のレコードセット オブジェクトのフィールド データ メンバーとデータ ソースの現在のレコードの対応する列間でデータを交換するには、このメンバー関数を呼び出します。DoFieldExchange は、レコードセットの選択の SQL ステートメントの文字列パラメーター プレースホルダーに、パラメーター データ メンバーがある場合、バインドします。
バルク行フェッチが実装されている場合、フレームワークは DoBulkFieldExchangeを呼び出します。バルク行フェッチを実装するには [開く] のメンバー関数で dwOptions のパラメーターの CRecordset::useMultiRowFetch のオプションを指定します。
[!メモ]
DoFieldExchange は CRecordsetの派生クラスを使用した場合だけです。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::DoBulkFieldExchange