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 操作は、CFieldExchange
の enum
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::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 は、この 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)」を参照してください。
例
この例では、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);
}