次の方法で共有


CFieldExchange クラス

データベース クラスで使うレコード フィールド エクスチェンジ (RFX) ルーチンとバルク レコード フィールド エクスチェンジ (Bulk RFX) ルーチンをサポートします。

構文

class CFieldExchange

メンバー

パブリック メソッド

名前 説明
CFieldExchange::IsFieldType 現在の操作が更新されるフィールドの型に適している場合は、0 以外の値を返します。
CFieldExchange::SetFieldType SetFieldTypeの次の呼び出しまで、RFX 関数に対する次のすべての呼び出しで表されるレコードセット データ メンバー (列またはパラメーター) の種類を指定します。

解説

CFieldExchange には基底クラスはありません。

カスタム データ型のデータ交換ルーチンを記述する場合、または一括行フェッチを実装する場合は、このクラスを使用します。それ以外の場合は、このクラスを直接使用しません。 RFX と Bulk RFX は、レコードセット オブジェクトのフィールド データ メンバーと、データ ソース上の現在のレコードの対応するフィールドの間でデータを交換します。

Note

Open Database Connectivity (ODBC) クラスではなく Data Access Objects (DAO) クラスを使用する場合は、代わりにクラス CDaoFieldExchange を使用します。 詳細については、「 Overview:Database Programming」を参照してください。

CFieldExchange オブジェクトは、レコード フィールド交換または一括レコード フィールド交換を実行するために必要なコンテキスト情報を提供します。 CFieldExchange オブジェクトは、パラメーターとフィールド データ メンバーのバインド、現在のレコードのフィールドに対するさまざまなフラグの設定など、さまざまな操作をサポートしています。 RFX および一括 RFX 操作は、CFieldExchangeenum FieldType によって定義された型のレコードセット クラス のデータ メンバーに対して実行されます。 指定できる FieldType 値は次のとおりです。

  • CFieldExchange::outputColumn フィールド データ メンバーの場合。

  • CFieldExchange::inputParam または入力パラメーター データ メンバーの CFieldExchange::param

  • CFieldExchange::outputParam 出力パラメーター データ メンバーの場合は。

  • CFieldExchange::inoutParam 入力/出力パラメーターのデータ メンバーの場合。

クラスのメンバー関数とデータ メンバーのほとんどは、独自のカスタム RFX ルーチンを記述するために提供されます。 SetFieldTypeは頻繁に使用します。 詳細については、「 Record Field Exchange (RFX)Recordset (ODBC)に関する記事を参照してください。 一括行フェッチの詳細については、「 Recordset: 一括レコードのフェッチ (ODBC)」を参照してください。 RFX および Bulk RFX グローバル関数の詳細については、このリファレンスの「MFC マクロとグローバル」セクションの「 Record Field Exchange Functions 」を参照してください。

継承階層

CFieldExchange

要件

Header: afxdb.h

CFieldExchange::IsFieldType

独自の RFX 関数を記述する場合は、関数の先頭で IsFieldType を呼び出して、現在の操作を特定のフィールドまたはパラメーター のデータ メンバー型 ( CFieldExchange::outputColumnCFieldExchange::inputParamCFieldExchange::paramCFieldExchange::outputParam、または CFieldExchange::inoutParam) で実行できるかどうかを判断します。

BOOL IsFieldType(UINT* pnField);

パラメーター

pnField
このパラメーターでは、フィールドまたはパラメーター・データ・メンバーの順次番号が返されます。 この数値は、 CRecordset::D oFieldExchange または CRecordset::D oBulkFieldExchange 関数のデータ メンバーの順序に対応します。

戻り値

現在のフィールドまたはパラメーター型に対して現在の操作を実行できる場合は 0 以外。

解説

既存の RFX 関数のモデルに従います。

CFieldExchange::SetFieldType

レコードセット クラスの DoFieldExchange または DoBulkFieldExchange オーバーライドでSetFieldTypeする呼び出しが必要です。

void SetFieldType(UINT nFieldType);

パラメーター

nFieldType
CFieldExchangeで宣言されているenum FieldTypeの値。次のいずれかになります。

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

解説

フィールド データ メンバーの場合は、CFieldExchange::outputColumnのパラメーターを使用してSetFieldTypeを呼び出し、その後に RFX 関数または Bulk RFX 関数を呼び出す必要があります。 一括行フェッチを実装していない場合、ClassWizard は、この SetFieldType 呼び出しを DoFieldExchangeのフィールド マップ セクションに配置します。

レコードセット クラスをパラメーター化する場合は、フィールド マップ セクションの外側で SetFieldType を再度呼び出し、その後、すべてのパラメーター データ メンバーに対する RFX 呼び出しを行う必要があります。 パラメーター データ メンバーの各型には、独自の SetFieldType 呼び出しが必要です。 次の表は、クラスのパラメーター データ メンバーを表すために SetFieldType に渡すことができるさまざまな値を示しています。

SetFieldType パラメーター値 パラメーター データ メンバーの型
CFieldExchange::inputParam 入力パラメーターです。 レコードセットのクエリまたはストアド プロシージャに渡される値。
CFieldExchange::param CFieldExchange::inputParamと同じです。
CFieldExchange::outputParam 出力パラメーターです。 レコードセットのストアド プロシージャの戻り値。
CFieldExchange::inoutParam 入力/出力パラメーター。 レコードセットのストアド プロシージャに渡され、レコードセットのストアド プロシージャから返される値。

一般に、フィールド データ メンバーまたはパラメーター データ メンバーに関連付けられている RFX 関数呼び出しの各グループの前に、 SetFieldTypeの呼び出しが必要です。 各SetFieldType呼び出しの nFieldType パラメーターは、SetFieldType呼び出しに続く RFX 関数呼び出しによって表されるデータ メンバーの型を識別します。

出力パラメーターと入出力パラメーターの処理の詳細については、 CRecordset メンバー関数 FlushResultSetを参照してください。 RFX 関数と一括 RFX 関数の詳細については、「レコード フィールド交換関数 トピックを参照してください。 一括行フェッチの関連情報については、「 Recordset: 一括レコードのフェッチ (ODBC)」を参照してください。

この例では、の呼び出しに伴う RFX 関数の呼び出しをいくつか示します。 SetFieldTypeは、CFieldExchange オブジェクトへのpFX ポインターを介して呼び出されることに注意してください。

void CSections::DoFieldExchange(CFieldExchange *pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   RFX_Text(pFX, _T("[CourseID]"), m_CourseID);
   RFX_Text(pFX, _T("[InstructorID]"), m_InstructorID);
   RFX_Text(pFX, _T("[RoomNo]"), m_RoomNo);
   RFX_Text(pFX, _T("[Schedule]"), m_Schedule);

   // output parameter
   pFX->SetFieldType(CFieldExchange::outputParam);
   RFX_Long(pFX, _T("Instructor_Count"), m_nCountParam);

   // input parameter
   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Department_Name"), m_strNameParam);
}

関連項目

階層図
CRecordset クラス