CDaoFieldExchange クラス
DAO データベース クラスで使われる DAO レコード フィールド エクスチェンジ (DFX: DAO Record Field eXchange) ルーチンをサポートします。
Note
DAO は、Office 2013 でサポートされています。 DAO 3.6 は最終バージョンであり、古いと見なされます。
構文
class CDaoFieldExchange
メンバー
パブリック メソッド
名前 | 説明 |
---|---|
CDaoFieldExchange::IsValidOperation | 現在の操作が更新されるフィールドの型に適している場合は、0 以外の値を返します。 |
CDaoFieldExchange::SetFieldType | SetFieldType の次の呼び出しまで、DFX 関数への後続のすべての呼び出しで表されるレコードセット データ メンバー (列またはパラメーター) の型を指定します。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CDaoFieldExchange::m_nOperation | レコードセットの DoFieldExchange メンバー関数の現在の呼び出しによって実行される DFX 操作。 |
CDaoFieldExchange::m_prs | DFX 操作が実行されているレコードセットへのポインター。 |
解説
CDaoFieldExchange
には基底クラスはありません。
カスタム データ型のデータ交換ルーチンを記述する場合は、このクラスを使用します。それ以外の場合は、このクラスを直接使用しません。 DFX は、 CDaoRecordset オブジェクトのフィールド データ メンバーと、データ ソース上の現在のレコードの対応するフィールドの間でデータを交換します。 DFX は、データ ソースとデータ ソースの双方向の交換を管理します。 カスタム DFX ルーチンの記述については、 テクニカル ノート 53 を参照してください。
Note
DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく MFC データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 DAO クラスを使用しても、ODBC データ ソースにアクセスできます。 一般に、DAO に基づく MFC クラスは、ODBC に基づく MFC クラスよりも能力が高くなります。 DAO ベースのクラスは、ODBC ドライバーを介して、独自のデータベース エンジンを介してデータにアクセスできます。 また、DAO を自分で呼び出す代わりに、クラスを介してテーブルを追加するなど、データ定義言語 (DDL) 操作もサポートしています。
Note
DAO レコード フィールド交換 (DFX) は、ODBC ベースの MFC データベース クラス ( CDatabase
、 CRecordset
) のレコード フィールド交換 (RFX) とよく似ています。 RFX を理解すれば、DFX を使いやすくなります。
CDaoFieldExchange
オブジェクトは、DAO レコード フィールドの交換を行うために必要なコンテキスト情報を提供します。 CDaoFieldExchange
オブジェクトは、パラメーターとフィールド データ メンバーのバインド、現在のレコードのフィールドに対するさまざまなフラグの設定など、さまざまな操作をサポートしています。 DFX 操作は、CDaoFieldExchange
の enum
FieldType によって定義された型のレコードセット クラス のデータ メンバーに対して実行されます。 指定できる FieldType 値は次のとおりです。
CDaoFieldExchange::outputColumn
フィールド データ メンバーの場合。CDaoFieldExchange::param
パラメーター データ メンバーの場合。
独自のカスタム DFX ルーチンを記述するために、 IsValidOperation メンバー関数が用意されています。 SetFieldType CDaoRecordset::D oFieldExchange 関数で頻繁に使用します。 DFX グローバル関数の詳細については、「 Record Field Exchange Functionsを参照してください。 独自のデータ型のカスタム DFX ルーチンの記述については、 テクニカル ノート 53 を参照してください。
継承階層
CDaoFieldExchange
要件
ヘッダー: afxdao.h
CDaoFieldExchange::IsValidOperation
独自の DFX 関数を記述する場合は、関数の先頭で IsValidOperation
を呼び出して、現在の操作を特定のフィールド データ メンバー型 ( CDaoFieldExchange::outputColumn
または CDaoFieldExchange::param
) に対して実行できるかどうかを判断します。
BOOL IsValidOperation();
戻り値
現在の操作が更新されるフィールドの種類に適している場合は 0 以外。
解説
DFX メカニズムによって実行される一部の操作は、使用可能なフィールド型のいずれかに対してのみ適用されます。 既存の DFX 関数のモデルに従います。
カスタム DFX ルーチンの記述の詳細については、 テクニカル ノート 53 を参照してください。
CDaoFieldExchange::m_nOperation
フィールド交換オブジェクトに関連付けられている CDaoRecordset オブジェクトに対して実行する操作を識別します。
解説
CDaoFieldExchange
オブジェクトは、レコードセットに対するさまざまな DFX 操作のコンテキストを提供します。
Note
以下のMarkForAddNew
およびSetFieldNull
操作で説明するPSEUDONULL
値は、フィールド Null をマークするために使用される値です。 DAO レコード フィールド交換メカニズム (DFX) は、この値を使用して、明示的に Null とマークされているフィールドを決定します。 PSEUDONULL
は、 COleDateTime
フィールドと COleCurrency
フィールドには必要ありません。
m_nOperation
の使用可能な値は次のとおりです。
操作 | 説明 |
---|---|
AddToParameterList |
SQL ステートメントの PARAMETERS 句をビルドします。 |
AddToSelectList |
SQL ステートメントの SELECT 句をビルドします。 |
BindField |
データベース内のフィールドをアプリケーション内のメモリの場所にバインドします。 |
BindParam |
レコードセットのクエリのパラメーター値を設定します。 |
Fixup |
フィールドの Null 状態を設定します。 |
AllocCache |
レコードセット内の "ダーティ" フィールドのチェックに使用されるキャッシュを割り当てます。 |
StoreField |
現在のレコードをキャッシュに保存します。 |
LoadField |
レコードセット内のキャッシュされたデータ メンバー変数を復元します。 |
FreeCache |
レコードセット内の "ダーティ" フィールドのチェックに使用されるキャッシュを解放します。 |
SetFieldNull |
フィールドの状態を Null に設定し、値を PSEUDONULL に設定します。 |
MarkForAddNew |
PSEUDONULL でない場合は、フィールドを "ダーティ" としてマークします。 |
MarkForEdit |
フィールドがキャッシュと一致しない場合は、"ダーティ" とマークします。 |
SetDirtyField |
"dirty" としてマークされたフィールド値を設定します。 |
DumpField |
フィールドの内容をダンプします (デバッグのみ)。 |
MaxDFXOperation |
入力チェックに使用されます。 |
CDaoFieldExchange::m_prs
CDaoFieldExchange
オブジェクトに関連付けられた CDaoRecordset オブジェクトへのポインターを格納します。
解説
CDaoFieldExchange::SetFieldType
CDaoRecordset
クラスのDoFieldExchange
オーバーライドでSetFieldType
を呼び出します。
void SetFieldType(UINT nFieldType);
パラメーター
nFieldType
CDaoFieldExchange
で宣言されている enum FieldType の値。次のいずれかになります。
CDaoFieldExchange::outputColumn
CDaoFieldExchange::param
解説
通常、ClassWizard はこの呼び出しを書き込みます。 独自の関数を記述し、ウィザードを使用して DoFieldExchange
関数を記述する場合は、フィールド マップの外部で独自の関数の呼び出しを追加します。 ウィザードを使用しない場合、フィールド マップは表示されません。 この呼び出しは、クラスのフィールド データ メンバーごとに 1 つずつ DFX 関数の呼び出しに先行し、フィールド型を CDaoFieldExchange::outputColumn
として識別します。
レコードセット クラスをパラメーター化する場合は、すべてのパラメーター データ メンバー (フィールド マップの外部) に DFX 呼び出しを追加し、これらの呼び出しの前に SetFieldType
を呼び出す必要があります。 値を CDaoFieldExchange::param
渡します。 (代わりに、 を使用できます。CDaoQueryDef パラメーター値を設定します。
一般に、フィールド データ メンバーまたはパラメーター データ メンバーに関連付けられている DFX 関数呼び出しの各グループの前に、 SetFieldType
の呼び出しが必要です。 各SetFieldType
呼び出しの nFieldType パラメーターは、SetFieldType
呼び出しに続く DFX 関数呼び出しによって表されるデータ メンバーの型を識別します。