CFieldExchange クラス

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

構文

class CFieldExchange

メンバー

パブリック メソッド

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

解説

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

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

Note

Open Database Connectivity (ODBC) クラスではなく、データ アクセス オブジェクト (DAO) クラスを使用する場合は、代わりに CDaoFieldExchange クラスを使用します。 詳細については、「概要:データベース プログラミング」を参照してください。

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

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

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

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

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

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

継承階層

CFieldExchange

必要条件

ヘッダー: afxdb.h

CFieldExchange::IsFieldType

独自の RFX 関数を記述する場合は、関数の先頭で呼び出IsFieldTypeして、現在の操作を特定のフィールドまたはパラメーター のデータ メンバー型 (aCFieldExchange::outputColumnCFieldExchange::inputParam、、、CFieldExchange::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 は次のフィールド マップ セクションDoFieldExchangeにこのSetFieldType呼び出しを配置します。

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

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

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

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

この例では、RFX 関数へのいくつかの呼び出しと、それに伴う呼び出しを SetFieldType示します。 これは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 クラス