次の方法で共有


CRecordset::DoFieldExchange

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

virtual void DoFieldExchange( 
   CFieldExchange* pFX  
);

パラメーター

  • pFX
    CFieldExchange オブジェクトへのポインターを返します。 このオブジェクトは、フィールド交換操作のコンテキストを指定するために、前もってフレームワークによって設定されています。

解説

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

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

注意

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

Exchange レコード フィールド エクス チェンジ (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 関数の詳細については、「レコード フィールド エクスチェンジ (RFX) 関数」を参照してください。

詳細な例と詳細についてDoFieldExchange、記事を参照してくださいレコード フィールド エクス チェンジ:RFX の動作。 RFX の一般的な情報については、「レコード フィールド エクスチェンジ (RFX)」を参照してください。

例外

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

必要条件

**ヘッダー:**afxdb.h

参照

参照

CRecordset クラス

階層図

CRecordset::m_nFields

CRecordset::m_nParams

CRecordset::DoBulkFieldExchange

CRecordset::GetFieldValue

CFieldExchange クラス

その他の技術情報

CRecordset のメンバー

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