CDaoFieldInfo 構造体
更新 : 2007 年 11 月
CDaoFieldInfo 構造体は、データ アクセス オブジェクト (DAO: Data Access Objects) 用に定義されたフィールド オブジェクトについての情報を保持します。
struct CDaoFieldInfo
{
CString m_strName; // Primary
short m_nType; // Primary
long m_lSize; // Primary
long m_lAttributes; // Primary
short m_nOrdinalPosition; // Secondary
BOOL m_bRequired; // Secondary
BOOL m_bAllowZeroLength; // Secondary
long m_lCollatingOrder; // Secondary
CString m_strForeignName; // Secondary
CString m_strSourceField; // Secondary
CString m_strSourceTable; // Secondary
CString m_strValidationRule; // All
CString m_strValidationText; // All
CString m_strDefaultValue; // All
};
パラメータ
m_strName
フィールド オブジェクトの一意名。詳細については、DAO ヘルプの「Name Property」を参照してください。m_nType
フィールドのデータ型を示す値。詳細については、DAO ヘルプの「Type Property」を参照してください。このプロパティ値は、次のいずれか 1 つになります。dbBoolean Yes/No 型 (TRUE/FALSE と同じ)。
dbByte バイト型。
dbInteger short 型。
dbLong long 型。
dbCurrency 通貨型。MFC クラス COleCurrency を参照してください。
dbSingle 単精度浮動小数点数型。
dbDouble 倍精度浮動小数点数型。
dbDate 日付/時刻型。MFC クラス COleDateTime を参照してください。
dbText テキスト型。MFC クラス CString を参照してください。
dbLongBinary Long Binary 型 (OLE オブジェクト)。MFC クラス CLongBinary の代わりに、高機能で使いやすいクラス CByteArray を使用できます。
dbMemo メモ型。MFC クラス CString を参照してください。
dbGUID リモート プロシージャ コールで使用されるグローバル一意識別子/汎用一意識別子。詳細については、DAO ヘルプの「Type Property」を参照してください。
メモ : バイナリ データに対して文字列データ型を使わないでください。文字列データ型を使用すると、データが Unicode/ANSI 変換層を通じて渡されるため、オーバーヘッドが増大し、予期しない変換結果を引き起こします。
m_lSize
テキストを保持する DAO フィールド オブジェクトの最大サイズ (バイト数) か、テキストまたは数値を保持するフィールド オブジェクトの固定サイズを示す値。詳細については、DAO ヘルプの「Size Property」を参照してください。サイズは次のいずれか 1 つの値になります。型
サイズ (バイト)
説明
dbBoolean
1 バイト
Yes/No 型 (True/False と同じ)
dbByte
1
バイト型
dbInteger
2
整数型
dbLong
4
long 型
dbCurrency
8
通貨型 (COleCurrency)
dbSingle
4
単精度浮動小数点数型
dbDouble
8
倍精度浮動小数点数型
dbDate
8
日付/時刻型 (COleDateTime)
dbText
1 - 255
テキスト型 (CString)
dbLongBinary
0
long binary 型 (OLE オブジェクトの CByteArray。CLongBinary の代わりに使用)。
dbMemo
0
メモ型 (CString)
dbGUID
16
リモート プロシージャ コールで使う、グローバル一意識別子/汎用一意識別子
m_lAttributes
テーブル定義、レコードセット、クエリ定義、またはインデックス オブジェクトが持つフィールド オブジェクトの特性を示します。返された値はこれら定数の合計であり、C++ ではビットごとの OR (|) 演算子で生成されます。dbFixedField フィールド サイズは固定 (数値フィールドの既定)。
dbVariableField フィールド サイズは可変 (テキスト フィールドだけ)。
dbAutoIncrField 新規追加されるレコードのこのフィールドには、一意の long 型整数値が自動的に設定されます。この値はレコードごとにインクリメントされ、変更することはできません。Microsoft Jet データベースのテーブル用だけにサポートされています。
dbUpdatableField フィールドの値を変更できます。
dbDescending フィールドは、降順 (Z から A または 100 から 0) に並べ替えられます (インデックス オブジェクトの Fields コレクション内のフィールド オブジェクトだけに適用されます。MFC では、インデックス オブジェクト自身がテーブル定義オブジェクトに含まれます)。この定数を除外すると、フィールドは昇順 (A - Z または 0 - 100) で並べ替えられます (既定)。
このプロパティの設定を調べる場合、特定の属性をテストするために C++ のビットごとの AND 演算子 (&) を使用できます。複数の属性を設定するときは、ビットごとの OR (|) 演算子で適切な定数を組み合わせることができます。詳細については、DAO ヘルプの「Attributes Property」を参照してください。
m_nOrdinalPosition
DAO フィールド オブジェクトが表すフィールドが、何番目のフィールドとして表示されるかを示す数値。CDaoTableDef::CreateField を使ってこのプロパティを設定できます。詳細については、DAO ヘルプの「OrdinalPosition Property」を参照してください。m_bRequired
DAO フィールド オブジェクトが Null 以外の値を必要としているかどうかを示します。このプロパティが TRUE のとき、フィールドは Null の値を許可しません。FALSE が設定されると、フィールドは AllowZeroLength と ValidationRule プロパティの設定によって指定された状態になるだけでなく、Null 値を持つことができます。詳細については、DAO ヘルプの「Required Property」を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。m_bAllowZeroLength
空の文字列 ("") がテキスト型またはメモ型を持つ DAO フィールド オブジェクトで有効かどうかを示します。このプロパティが TRUE のとき、空の文字列は有効です。FALSE を設定するとフィールドの値に空の文字列を設定できなくなります。詳細については、DAO ヘルプの「AllowZeroLength Property」を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。m_lCollatingOrder
文字列の比較または並べ替えを行うときの基準となる、テキストの並べ替え順序を指定します。詳細については、DAO ヘルプの「Customizing Windows Registry Settings for Data Access」を参照してください。返される可能性がある値の一覧については、CDaoDatabaseInfo 構造体のメンバ m_lCollatingOrder を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。m_strForeignName
主テーブルのフィールドに対応する、外部キー テーブル内の DAO フィールド オブジェクトの名前を示す値。詳細については、DAO ヘルプの「ForeignName Property」を参照してください。m_strSourceField
テーブル定義、レコードセット、またはクエリ定義オブジェクトが持つ DAO フィールド オブジェクトのデータの元のソースであるフィールドの名前を示します。このプロパティは、フィールド オブジェクトに関連付けられた元のフィールド名を示します。たとえば、このプロパティを使って、基になるテーブルのフィールドとは無関係の名前を持つクエリ フィールドのデータのソースを調べることができます。詳細については、DAO ヘルプの「SourceField, SourceTable Properties」を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。m_strSourceTable
テーブル定義、レコードセット、またはクエリ定義オブジェクトが持つ DAO フィールド オブジェクトのデータの元のソースであるテーブルの名前を示します。このプロパティは、フィールド オブジェクトに関連付けられた元のテーブル名を示します。たとえば、このプロパティを使って、基になるテーブルのフィールドとは無関係の名前を持つクエリ フィールドのデータのソースを調べることができます。詳細については、DAO ヘルプの「SourceField, SourceTable Properties」を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。m_strValidationRule
フィールドのデータを変更したり、テーブルに追加したりするときに、そのデータが有効かどうかを調べるための値。詳細については、DAO ヘルプの「ValidationRule Property」を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。テーブル定義の関連情報については、CDaoTableDefInfo 構造体の m_strValidationRule メンバを参照してください。
m_strValidationText
DAO フィールド オブジェクトの値が ValidationRule プロパティの設定により指定された入力規則を満たさない場合に、アプリケーションによって表示されるメッセージ テキストを指定する値。詳細については、DAO ヘルプの「ValidationText Property」を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。m_strDefaultValue
DAO フィールド オブジェクトの既定値。新しいレコードが作成されたとき DefaultValue プロパティの設定がフィールドの値として自動的に入力されます。詳細については、DAO ヘルプの「DefaultValue Property」を参照してください。CDaoTableDef::CreateField を使用して、テーブル定義のこのプロパティを設定できます。
解説
上の "プライマリ"、"セカンダリ"、および "すべて" は、CDaoTableDef、CDaoQueryDef、CDaoRecordset クラスで GetFieldInfo メンバ関数によってどの情報が返されるかを示しています。
MFC クラスは、フィールド オブジェクトを表しません。代わりに、CDaoTableDef、CDaoRecordset、および CDaoQueryDef クラスの MFC オブジェクトに基づく DAO オブジェクトが、フィールド オブジェクトのコレクションを保持します。これらのクラスには、フィールド情報の各アイテムにアクセスするメンバ関数が用意されています。また、上の 3 つの MFC オブジェクトの GetFieldInfo メンバ関数を呼び出して CDaoFieldInfo オブジェクトを取得し、これらのアイテムに一度にアクセスすることもできます。
CDaoFieldInfo は、オブジェクトのプロパティを調べるほかに、テーブル定義の新しいフィールドを作成するための入力パラメータを生成するために使うこともできます。この作業のために簡易オプションを利用できますが、細かい制御を行う場合は、CDaoFieldInfo パラメータを取得する CDaoTableDef::CreateField を使用できます。
フィールドを持つクラスの GetFieldInfo メンバ関数が取得した情報は、CDaoFieldInfo 構造体に格納されます。目的のフィールド オブジェクトが属している Fields コレクションを持つオブジェクトに対して GetFieldInfo を呼び出してください。また、デバッグ用のビルドでは CDaoFieldInfo は Dump メンバ関数を定義します。Dump 関数を使って CDaoFieldInfo オブジェクトの内容をダンプできます。
必要条件
ヘッダー : afxdao.h