次の方法で共有


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 データベース クラス ( CDatabaseCRecordset) のレコード フィールド交換 (RFX) とよく似ています。 RFX を理解すれば、DFX を使いやすくなります。

CDaoFieldExchange オブジェクトは、DAO レコード フィールドの交換を行うために必要なコンテキスト情報を提供します。 CDaoFieldExchange オブジェクトは、パラメーターとフィールド データ メンバーのバインド、現在のレコードのフィールドに対するさまざまなフラグの設定など、さまざまな操作をサポートしています。 DFX 操作は、CDaoFieldExchangeenum 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 関数呼び出しによって表されるデータ メンバーの型を識別します。

関連項目

階層図
CDaoRecordset クラス