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::outputColumn
、CFieldExchange::inputParam
、、、CFieldExchange::param
CFieldExchange::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
識別します。
出力パラメーターと入力/出力パラメーターの処理の詳細については、メンバー関数 FlushResultSet をCRecordset
参照してください。 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);
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示