CDaoTableDef クラス
ベース テーブル、またはアタッチ テーブルの格納された定義を表現します。
Note
DAO は、Office 2013 でサポートされています。 DAO 3.6 は最終バージョンであり、古いと見なされます。
構文
class CDaoTableDef : public CObject
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CDaoTableDef::CDaoTableDef | CDaoTableDef オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CDaoTableDef::Append | データベースに新しいテーブルを追加します。 |
CDaoTableDef::CanUpdate | テーブルを更新できる場合は 0 以外の値を返します (フィールドまたはテーブルプロパティの定義を変更できます)。 |
CDaoTableDef::Close | 開いている tabledef を閉じます。 |
CDaoTableDef::Create | Append を使用してデータベースに追加できるテーブルを作成します。 |
CDaoTableDef::CreateField | テーブルのフィールドを作成するために呼び出されます。 |
CDaoTableDef::CreateIndex | テーブルのインデックスを作成するために呼び出されます。 |
CDaoTableDef::D eleteField | テーブルからフィールドを削除するために呼び出されます。 |
CDaoTableDef::D eleteIndex | テーブルからインデックスを削除するために呼び出されます。 |
CDaoTableDef::GetAttributes | CDaoTableDef オブジェクトの 1 つ以上の特性を示す値を返します。 |
CDaoTableDef::GetConnect | テーブルのソースに関する情報を提供する値を返します。 |
CDaoTableDef::GetDateCreated | CDaoTableDef オブジェクトの基になる基本テーブルが作成された日時を返します。 |
CDaoTableDef::GetDateLastUpdated | 基本テーブルのデザインに対して行われた最新の変更の日時を返します。 |
CDaoTableDef::GetFieldCount | テーブル内のフィールドの数を表す値を返します。 |
CDaoTableDef::GetFieldInfo | テーブル内のフィールドに関する特定の種類の情報を返します。 |
CDaoTableDef::GetIndexCount | テーブルのインデックスの数を返します。 |
CDaoTableDef::GetIndexInfo | テーブルのインデックスに関する特定の種類の情報を返します。 |
CDaoTableDef::GetName | テーブルのユーザー定義名を返します。 |
CDaoTableDef::GetRecordCount | テーブル内のレコードの数を返します。 |
CDaoTableDef::GetSourceTableName | ソース データベース内の添付テーブルの名前を指定する値を返します。 |
CDaoTableDef::GetValidationRule | フィールド内のデータが変更またはテーブルに追加されるときに検証する値を返します。 |
CDaoTableDef::GetValidationText | Field オブジェクトの値が指定された検証規則を満たしていない場合にアプリケーションが表示するメッセージのテキストを指定する値を返します。 |
CDaoTableDef::IsOpen | テーブルが開いている場合は、0 以外の値を返します。 |
CDaoTableDef::Open | データベースの TableDef のコレクションに格納されている既存の tabledef を開きます。 |
CDaoTableDef::RefreshLink | 接続テーブルの接続情報を更新します。 |
CDaoTableDef::SetAttributes | CDaoTableDef オブジェクトの 1 つ以上の特性を示す値を設定します。 |
CDaoTableDef::SetConnect | テーブルのソースに関する情報を提供する値を設定します。 |
CDaoTableDef::SetName | テーブルの名前を設定します。 |
CDaoTableDef::SetSourceTableName | ソース データベース内のアタッチされたテーブルの名前を指定する値を設定します。 |
CDaoTableDef::SetValidationRule | フィールド内のデータが変更またはテーブルに追加されるときに検証する値を設定します。 |
CDaoTableDef::SetValidationText | Field オブジェクトの値が指定された検証規則を満たしていない場合にアプリケーションに表示されるメッセージのテキストを指定する値を設定します。 |
パブリック データ メンバー
名前 | 説明 |
---|---|
CDaoTableDef::m_pDAOTableDef | tabledef オブジェクトの基になる DAO インターフェイスへのポインター。 |
CDaoTableDef::m_pDatabase | このテーブルのソース データベース。 |
解説
各 DAO データベース オブジェクトは、保存されたすべての DAO tabledef オブジェクトを含む TableDefs と呼ばれるコレクションを保持します。
CDaoTableDef
オブジェクトを使用してテーブル定義を操作します。 たとえば、次のようなことができます。
データベース内のローカル テーブル、アタッチテーブル、または外部テーブルのフィールドとインデックス構造を調べます。
アタッチされたテーブルの
SetConnect
およびSetSourceTableName
メンバー関数を呼び出し、RefreshLink
メンバー関数を使用して、アタッチされたテーブルへの接続を更新します。CanUpdate
メンバー関数を呼び出して、テーブル内のフィールド定義を編集できるかどうかを判断します。GetValidationRule
とSetValidationRule
、およびGetValidationText
およびSetValidationText
メンバー関数を使用して検証条件を取得または設定します。Open
メンバー関数を使用して、テーブル、ダイナセット、またはスナップショットタイプのCDaoRecordset
オブジェクトを作成します。Note
DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく MFC データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 DAO クラスを使用して ODBC データ ソースに引き続きアクセスできます。DAO クラスは、Microsoft Jet データベース エンジンに固有であるため、一般に優れた機能を提供します。
tabledef オブジェクトを使用して既存のテーブルを操作するか、新しいテーブルを作成するには
いずれの場合も、最初に
CDaoTableDef
オブジェクトを構築し、テーブルが属する CDaoDatabase オブジェクトへのポインターを指定します。次に、必要に応じて次の操作を行います。
既存の保存済みテーブルを使用するには、tabledef オブジェクトの Open メンバー関数を呼び出して、保存されたテーブルの名前を指定します。
新しいテーブルを作成するには、tabledef オブジェクトの Create メンバー関数を呼び出し、テーブルの名前を指定します。 CreateField および CreateIndex を呼び出して、フィールドとインデックスをテーブルに追加します。
Append を呼び出して、データベースの TableDefs コレクションに追加してテーブルを保存します。
Create
は tabledef をオープン状態にするため、Create
呼び出した後はOpen
を呼び出しません。ヒント
保存されたテーブルを作成する最も簡単な方法は、Microsoft Access を使用してテーブルを作成し、データベースに格納することです。 その後、MFC コードで開いて使用できます。
開くか作成した tabledef オブジェクトを使用するには、CDaoRecordset
オブジェクトを作成して開き、OpenType パラメーターにdbOpenTable
値を指定して tabledef の名前を指定します。
tabledef オブジェクトを使用して CDaoRecordset
オブジェクトを作成するには、通常、前述のように tabledef を作成または開き、レコードセット オブジェクトを作成し、 CDaoRecordset::Open を呼び出すときに tabledef オブジェクトへのポインターを渡します。 渡す tabledef は、開いている状態である必要があります。 詳細については、クラス CDaoRecordset を参照してください。
tabledef オブジェクトの使用が完了したら、その Close メンバー関数を呼び出し、tabledef オブジェクトを破棄します。
継承階層
CDaoTableDef
要件
ヘッダー: afxdao.h
CDaoTableDef::Append
Create を呼び出して新しい tabledef オブジェクトを作成し、tabledef をデータベースに保存した後で、このメンバー関数を呼び出します。
virtual void Append();
解説
この関数は、データベースの TableDefs コレクションにオブジェクトを追加します。 tabledef は、追加しないことで定義するときに一時オブジェクトとして使用できますが、保存して使用する場合は、 Append
を呼び出す必要があります。
Note
名前のない tabledef (null または空の文字列を含む) を追加しようとすると、MFC は例外をスローします。
関連情報については、DAO ヘルプの「Append メソッド」を参照してください。
CDaoTableDef::CanUpdate
このメンバー関数を呼び出して、 CDaoTableDef
オブジェクトの基になるテーブルの定義を変更できるかどうかを判断します。
BOOL CanUpdate();
戻り値
テーブル構造 (スキーマ) を変更 (フィールドとインデックスの追加または削除) できる場合は 0 以外、それ以外の場合は 0。
解説
既定では、 CDaoTableDef
オブジェクトの基になる新しく作成されたテーブルを更新でき、 CDaoTableDef
オブジェクトの基になるアタッチされたテーブルを更新することはできません。 結果のレコードセットが更新できない場合でも、 CDaoTableDef
オブジェクトは更新可能な場合があります。
関連情報については、DAO ヘルプの「更新可能なプロパティ」を参照してください。
CDaoTableDef::CDaoTableDef
CDaoTableDef
オブジェクトを構築します。
CDaoTableDef(CDaoDatabase* pDatabase);
パラメーター
pDatabase
CDaoDatabase オブジェクトへのポインター。
解説
オブジェクトを構築した後、 Create または Open メンバー関数を呼び出す必要があります。 オブジェクトを終了したら、その Close メンバー関数を呼び出し、 CDaoTableDef
オブジェクトを破棄する必要があります。
CDaoTableDef::Close
tabledef オブジェクトを閉じて解放するには、このメンバー関数を呼び出します。
virtual void Close();
解説
通常、 Close
を呼び出した後、tabledef オブジェクトが new
で割り当てられた場合は削除します。
Close
を呼び出した後、Open を再度呼び出すことができます。 これにより、tabledef オブジェクトを再利用できます。
関連情報については、DAO ヘルプの「Close メソッド」を参照してください。
CDaoTableDef::Create
このメンバー関数を呼び出して、新しい保存済みテーブルを作成します。
virtual void Create(
LPCTSTR lpszName,
long lAttributes = 0,
LPCTSTR lpszSrcTable = NULL,
LPCTSTR lpszConnect = NULL);
パラメーター
lpszName
テーブルの名前を含む文字列へのポインター。
lAttributes
tabledef オブジェクトによって表されるテーブルの特性に対応する値。 ビットごとの OR を使用して、次のいずれかの定数を組み合わせることができます。
定数 | 説明 |
---|---|
dbAttachExclusive |
Microsoft Jet データベース エンジンを使用するデータベースの場合、テーブルが排他的に開かれた添付テーブルであることを示します。 |
dbAttachSavePWD |
Microsoft Jet データベース エンジンを使用するデータベースの場合は、接続テーブルのユーザー ID とパスワードが接続情報と共に保存されることを示します。 |
dbSystemObject |
テーブルが Microsoft Jet データベース エンジンによって提供されるシステム テーブルであることを示します。 |
dbHiddenObject |
テーブルが Microsoft Jet データベース エンジンによって提供される非表示テーブルであることを示します。 |
lpszSrcTable
ソース テーブル名を含む文字列へのポインター。 既定では、この値は NULL として初期化されます。
lpszConnect
既定の接続文字列を含む文字列へのポインター。 既定では、この値は NULL として初期化されます。
解説
tabledef という名前を付けたら、 Append を呼び出して、tabledef をデータベースの TableDefs コレクションに保存できます。 Append
を呼び出した後、tabledef は開いている状態になり、それを使用して CDaoRecordset オブジェクトを作成できます。
関連情報については、DAO ヘルプの「CreateTableDef メソッド」を参照してください。
CDaoTableDef::CreateField
このメンバー関数を呼び出して、テーブルにフィールドを追加します。
void CreateField(
LPCTSTR lpszName,
short nType,
long lSize,
long lAttributes = 0);
void CreateField(CDaoFieldInfo& fieldinfo);
パラメーター
lpszName
このフィールドの名前を指定する文字列式へのポインター。
nType
フィールドのデータ型を示す値。 設定には、次のいずれかの値を指定できます。
Type | サイズ (バイト) | 説明 |
---|---|---|
dbBoolean |
1 バイト | BOOL |
dbByte |
BYTE | |
dbInteger |
2 | int |
dbLong |
4 | long |
dbCurrency |
8 | Currency ( COleCurrency) |
dbSingle |
4 | float |
dbDouble |
8 | 倍精度浮動小数点 |
dbDate |
8 | Date/Time ( COleDateTime) |
dbText |
1 - 255 | Text ( CString) |
dbLongBinary |
0 | Long Binary (OLE オブジェクト)、 CLongBinary または CByteArray |
dbMemo |
0 | Memo ( CString) |
lSize
テキストを含むフィールドの最大サイズ (バイト単位)、またはテキストまたは数値を含むフィールドの固定サイズを示す値。 lSize パラメーターは、テキスト フィールド以外では無視されます。
lAttributes
フィールドの特性に対応し、ビットごとの OR を使用して結合できる値。
定数 | 説明 |
---|---|
dbFixedField |
フィールド サイズは固定されています (数値フィールドの既定値)。 |
dbVariableField |
フィールド サイズは可変です (テキスト フィールドのみ)。 |
dbAutoIncrField |
新しいレコードのフィールド値は、変更できない一意の長整数に自動的にインクリメントされます。 Microsoft Jet データベース テーブルでのみサポートされます。 |
dbUpdatableField |
フィールド値は変更できます。 |
dbDescending |
フィールドは降順 (Z - A または 100 - 0) で並べ替えられます (Index オブジェクトの Fields コレクション内の Field オブジェクトにのみ適用されます)。 この定数を省略すると、フィールドは昇順 (A ~ Z または 0 - 100) で並べ替えられます (既定値)。 |
fieldinfo
CDaoFieldInfo 構造体への参照。
解説
DAOField
(OLE) オブジェクトが作成され、DAOTableDef
(OLE) オブジェクトの Fields コレクションに追加されます。 オブジェクトのプロパティを調べるだけでなく、 CDaoFieldInfo
を使用して、tabledef に新しいフィールドを作成するための入力パラメーターを作成することもできます。 CreateField
の最初のバージョンは簡単に使用できますが、より細かい制御が必要な場合は、CDaoFieldInfo
パラメーターを受け取る 2 番目のバージョンのCreateField
を使用できます。
CDaoFieldInfo
パラメーターを受け取るCreateField
のバージョンを使用する場合は、CDaoFieldInfo
構造体の次の各メンバーを慎重に設定する必要があります。
m_strName
m_nType
m_lSize
m_lAttributes
m_bAllowZeroLength
CDaoFieldInfo
の残りのメンバーは、メンバーに応じて 0 FALSE、または空の文字列に設定する必要があります。または、CDaoException
が発生する可能性があります。
関連情報については、DAO ヘルプの「CreateField メソッド」を参照してください。
CDaoTableDef::CreateIndex
テーブルにインデックスを追加するには、この関数を呼び出します。
void CreateIndex(CDaoIndexInfo& indexinfo);
パラメーター
indexinfo
CDaoIndexInfo 構造体への参照。
解説
インデックスは、データベース テーブルからアクセスされるレコードの順序と、重複するレコードを受け入れるかどうかを指定します。 インデックスは、データへの効率的なアクセスも提供します。
テーブルのインデックスを作成する必要はありませんが、インデックスのない大きなテーブルでは、特定のレコードにアクセスしたり、レコードセットを作成したりするのに時間がかかる場合があります。 一方、インデックスを作成しすぎると、すべてのインデックスが自動的に更新されるため、更新、追加、削除の操作が遅くなります。 作成するインデックスを決定するときは、これらの要因を考慮してください。
CDaoIndexInfo
構造体の次のメンバーを設定する必要があります。
m_strName
名前を指定する必要があります。m_pFieldInfos
CDaoIndexFieldInfo
構造体の配列を指す必要があります。m_nFields
CDaoFieldInfo
構造体の配列内のフィールドの数を指定する必要があります。
FALSE に設定されている場合、残りのメンバーは無視されます。 さらに、 m_lDistinctCount
メンバーはインデックスの作成時に無視されます。
CDaoTableDef::D eleteField
このメンバー関数を呼び出してフィールドを削除し、アクセスできないようにします。
void DeleteField(LPCTSTR lpszName);
void DeleteField(int nIndex);
パラメーター
lpszName
既存のフィールドの名前である文字列式へのポインター。
nIndex
テーブルの 0 から始まる Fields コレクション内のフィールドのインデックス。インデックスによる参照用です。
解説
このメンバー関数は、データベースに追加されていない新しいオブジェクト、または CanUpdate が 0 以外の値を返すときに使用できます。
関連情報については、DAO ヘルプの「Delete メソッド」のトピックを参照してください。
CDaoTableDef::D eleteIndex
基になるテーブル内のインデックスを削除するには、このメンバー関数を呼び出します。
void DeleteIndex(LPCTSTR lpszName);
void DeleteIndex(int nIndex);
パラメーター
lpszName
既存のインデックスの名前である文字列式へのポインター。
nIndex
データベースの 0 から始まる TableDefs コレクション内のインデックス オブジェクトの配列インデックス。インデックスによる参照用です。
解説
このメンバー関数は、データベースに追加されていない新しいオブジェクト、または CanUpdate が 0 以外の値を返すときに使用できます。
関連情報については、DAO ヘルプの「Delete メソッド」のトピックを参照してください。
CDaoTableDef::GetAttributes
CDaoTableDef
オブジェクトの場合、戻り値はCDaoTableDef
オブジェクトによって表されるテーブルの特性を指定し、次の定数の合計にすることができます。
long GetAttributes();
戻り値
CDaoTableDef
オブジェクトの 1 つ以上の特性を示す値を返します。
解説
定数 | 説明 |
---|---|
dbAttachExclusive |
Microsoft Jet データベース エンジンを使用するデータベースの場合、テーブルが排他的に開かれた添付テーブルであることを示します。 |
dbAttachSavePWD |
Microsoft Jet データベース エンジンを使用するデータベースの場合は、接続テーブルのユーザー ID とパスワードが接続情報と共に保存されることを示します。 |
dbSystemObject |
テーブルが Microsoft Jet データベース エンジンによって提供されるシステム テーブルであることを示します。 |
dbHiddenObject |
テーブルが Microsoft Jet データベース エンジンによって提供される非表示テーブルであることを示します。 |
dbAttachedTable |
テーブルが、Paradox データベースなどの ODBC 以外のデータベースからアタッチされたテーブルであることを示します。 |
dbAttachedODBC |
テーブルが、Microsoft SQL Server などの ODBC データベースからアタッチされたテーブルであることを示します。 |
システム テーブルは、さまざまな内部情報を格納するために Microsoft Jet データベース エンジンによって作成されたテーブルです。
非表示テーブルは、Microsoft Jet データベース エンジンによって一時的に使用するために作成されたテーブルです。
関連情報については、DAO ヘルプの「Attributes プロパティ」を参照してください。
CDaoTableDef::GetConnect
このメンバー関数を呼び出して、データ ソースの接続文字列を取得します。
CString GetConnect();
戻り値
テーブルのパスとデータベースの種類を含む CString
オブジェクト。
解説
アタッチされたテーブルを表す CDaoTableDef
オブジェクトの場合、 CString
オブジェクトは 1 つまたは 2 つの部分 (データベース型指定子とデータベースへのパス) で構成されます。
次の表に示すパスは、データベース ファイルを含むディレクトリの完全なパスであり、その前に識別子 "DATABASE=" を付ける必要があります。 場合によっては (Microsoft Jet および Microsoft Excel データベースと同様)、特定のファイル名がデータベース パス引数に含まれます。
CDaoTableDef::SetConnect のテーブルには、使用可能なデータベースの種類とそれに対応するデータベース指定子とパスが示されています。
Microsoft Jet データベース ベース テーブルの場合、指定子は空の文字列 ("") です。
パスワードが必要であっても指定されていない場合、ODBC ドライバーは、テーブルに初めてアクセスする際にログイン ダイアログ ボックスを表示し、接続を閉じて再度開くと、再度表示されます。 アタッチされたテーブルに dbAttachSavePWD
属性がある場合、テーブルを再度開いたときにログイン プロンプトは表示されません。
関連情報については、DAO ヘルプの「Connect プロパティ」を参照してください。
CDaoTableDef::GetDateCreated
この関数を呼び出して、 CDaoTableDef
オブジェクトの基になるテーブルが作成された日時を確認します。
COleDateTime GetDateCreated();
戻り値
CDaoTableDef
オブジェクトの基になるテーブルの作成日時を含む値。
解説
日付と時刻の設定は、ベース テーブルが作成または最後に更新されたコンピューターから派生します。 マルチユーザー環境では、ユーザーは、不一致を避けるために、ファイル サーバーから直接これらの設定を取得する必要があります。つまり、すべてのクライアントは、おそらく 1 つのサーバーから "標準" のタイム ソースを使用する必要があります。
関連情報については、DAO ヘルプの「DateCreated,LastUpdated プロパティ」を参照してください。
CDaoTableDef::GetDateLastUpdated
この関数を呼び出して、 CDaoTableDef
オブジェクトの基になるテーブルが最後に更新された日時を確認します。
COleDateTime GetDateLastUpdated();
戻り値
CDaoTableDef
オブジェクトの基になるテーブルが最後に更新された日時を含む値。
解説
日付と時刻の設定は、ベース テーブルが作成または最後に更新されたコンピューターから派生します。 マルチユーザー環境では、ユーザーは、不一致を避けるために、ファイル サーバーから直接これらの設定を取得する必要があります。つまり、すべてのクライアントは、おそらく 1 つのサーバーから "標準" のタイム ソースを使用する必要があります。
関連情報については、DAO ヘルプの「DateCreated,LastUpdated プロパティ」を参照してください。
CDaoTableDef::GetFieldCount
このメンバー関数を呼び出して、テーブルに定義されているフィールドの数を取得します。
short GetFieldCount();
戻り値
テーブル内のフィールドの数。
解説
値が 0 の場合、コレクション内にオブジェクトはありません。
関連情報については、DAO ヘルプの「Count プロパティ」を参照してください。
CDaoTableDef::GetFieldInfo
tabledef で定義されているフィールドに関するさまざまな種類の情報を取得するには、このメンバー関数を呼び出します。
void GetFieldInfo(
int nIndex,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetFieldInfo(
LPCTSTR lpszName,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
パラメーター
nIndex
テーブルの 0 から始まる Fields コレクション内のフィールド オブジェクトのインデックス。インデックスによる参照用です。
fieldinfo
CDaoFieldInfo 構造体への参照。
dwInfoOptions
取得するフィールドに関する情報を指定するオプション。 使用可能なオプションと、関数が返す原因を次に示します。
AFX_DAO_PRIMARY_INFO
(既定値)名前、型、サイズ、属性。 最速のパフォーマンスを得る場合は、このオプションを使用します。AFX_DAO_SECONDARY_INFO
主な情報に加えて、序数の位置、必須、ゼロ長の許可、照合順序、外部名、ソース フィールド、ソース テーブルAFX_DAO_ALL_INFO
プライマリとセカンダリの情報に加えて、検証規則、検証テキスト、既定値
lpszName
名前で検索するためのフィールド オブジェクトの名前へのポインター。 名前は、フィールドに一意の名前を付ける最大 64 文字の文字列です。
解説
関数の 1 つのバージョンでは、インデックスでフィールドを検索できます。 もう 1 つのバージョンでは、名前でフィールドを検索できます。
返される情報の説明については、 CDaoFieldInfo 構造体を参照してください。 この構造体には、 dwInfoOptions の説明に記載されている情報の項目に対応するメンバーがあります。 1 つのレベルで情報を要求すると、以前のレベルの情報も取得されます。
関連情報については、DAO ヘルプの「Attributes プロパティ」を参照してください。
CDaoTableDef::GetIndexCount
テーブルのインデックスの数を取得するには、このメンバー関数を呼び出します。
short GetIndexCount();
戻り値
テーブルのインデックスの数。
解説
値が 0 の場合、コレクション内にインデックスはありません。
関連情報については、DAO ヘルプの「Count プロパティ」を参照してください。
CDaoTableDef::GetIndexInfo
tabledef で定義されているインデックスに関するさまざまな種類の情報を取得するには、このメンバー関数を呼び出します。
void GetIndexInfo(
int nIndex,
CDaoIndexInfo& indexinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetIndexInfo(
LPCTSTR lpszName,
CDaoIndexInfo& indexinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
パラメーター
nIndex
テーブルの 0 から始まる Indexes コレクション内の Index オブジェクトの数値インデックス。コレクション内の位置による参照用です。
indexinfo
CDaoIndexInfo 構造体への参照。
dwInfoOptions
取得するインデックスに関する情報を指定するオプション。 使用可能なオプションと、関数が返す原因を次に示します。
AFX_DAO_PRIMARY_INFO
名前、フィールド情報、フィールド。 最速のパフォーマンスを得る場合は、このオプションを使用します。AFX_DAO_SECONDARY_INFO
プライマリ情報に加えて、プライマリ、一意、クラスター化、Null を無視、必須、外部AFX_DAO_ALL_INFO
プライマリとセカンダリの情報に加えて、個別のカウント
lpszName
名前で検索するためのインデックス オブジェクトの名前へのポインター。
解説
関数の 1 つのバージョンでは、コレクション内の位置でインデックスを検索できます。 もう 1 つのバージョンでは、名前でインデックスを検索できます。
返される情報の説明については、 CDaoIndexInfo 構造体を参照してください。 この構造体には、 dwInfoOptions の説明に記載されている情報の項目に対応するメンバーがあります。 1 つのレベルで情報を要求すると、以前のレベルの情報も取得されます。
関連情報については、DAO ヘルプの「Attributes プロパティ」を参照してください。
CDaoTableDef::GetName
このメンバー関数を呼び出して、基になるテーブルのユーザー定義名を取得します。
CString GetName();
戻り値
テーブルのユーザー定義名。
解説
この名前は文字で始まり、最大 64 文字を含めることができます。 数字とアンダースコア文字を含めることができますが、句読点やスペースを含めることはできません。
関連情報については、DAO ヘルプの「Name プロパティ」を参照してください。
CDaoTableDef::GetRecordCount
このメンバー関数を呼び出して、 CDaoTableDef
オブジェクト内のレコードの数を調べる。
long GetRecordCount();
戻り値
tabledef オブジェクトでアクセスされるレコードの数。
解説
テーブルタイプのCDaoTableDef
オブジェクトに対してGetRecordCount
を呼び出すと、テーブル内のおおよそのレコード数が反映され、テーブルレコードが追加および削除されるとすぐに影響を受けます。 ロールバックされたトランザクションは、 CDaoWorkSpace::CompactDatabase を呼び出すまで、レコード数の一部として表示されます。 レコードのない CDaoTableDef
オブジェクトのレコード数プロパティの設定は 0 です。 アタッチされたテーブルまたは ODBC データベースを使用する場合、 GetRecordCount
は常に -1 を返します。
関連情報については、DAO ヘルプの「RecordCount プロパティ」を参照してください。
CDaoTableDef::GetSourceTableName
このメンバー関数を呼び出して、ソース データベース内の添付テーブルの名前を取得します。
CString GetSourceTableName();
戻り値
アタッチされたテーブルのソース名を指定する CString
オブジェクト。ネイティブ データ テーブルの場合は空の文字列。
解説
添付テーブルは、Microsoft Jet データベースにリンクされている別のデータベース内のテーブルです。 アタッチされたテーブルのデータは外部データベースに残り、他のアプリケーションで操作できます。
関連情報については、DAO ヘルプの「SourceTableName プロパティ」を参照してください。
CDaoTableDef::GetValidationRule
tabledef の検証規則を取得するには、このメンバー関数を呼び出します。
CString GetValidationRule();
戻り値
フィールド内のデータが変更またはテーブルに追加されるときに検証する CString
オブジェクト。
解説
検証規則は、更新操作に関連して使用されます。 tabledef に検証規則が含まれている場合、その tabledef の更新は、データが変更される前に、事前に定義された条件と一致する必要があります。 変更が条件と一致しない場合は、 GetValidationText の値を含む例外がスローされます。 CDaoTableDef
オブジェクトの場合、このCString
はアタッチされたテーブルの場合は読み取り専用で、ベース テーブルの場合は読み取り/書き込み可能です。
関連情報については、DAO ヘルプの「ValidationRule プロパティ」を参照してください。
CDaoTableDef::GetValidationText
ユーザーが入力規則に一致しないデータを入力したときに表示する文字列を取得するには、この関数を呼び出します。
CString GetValidationText();
戻り値
ユーザーが検証規則に一致しないデータを入力した場合に表示されるテキストを指定する CString
オブジェクト。
解説
CDaoTableDef
オブジェクトの場合、このCString
はアタッチされたテーブルの場合は読み取り専用で、ベース テーブルの場合は読み取り/書き込み可能です。
関連情報については、DAO ヘルプの「ValidationText プロパティ」を参照してください。
CDaoTableDef::IsOpen
このメンバー関数を呼び出して、 CDaoTableDef
オブジェクトが現在開いているかどうかを判断します。
BOOL IsOpen() const;
戻り値
CDaoTableDef
オブジェクトが開いている場合は 0 以外、それ以外の場合は 0。
解説
CDaoTableDef::m_pDatabase
このテーブルの CDaoDatabase オブジェクトへのポインターを格納します。
解説
CDaoTableDef::m_pDAOTableDef
CDaoTableDef
オブジェクトの基になる DAO tabledef オブジェクトの OLE インターフェイスへのポインターを格納します。
解説
DAO インターフェイスに直接アクセスする必要がある場合は、このポインターを使用します。
CDaoTableDef::Open
このメンバー関数を呼び出して、以前にデータベースの TableDef のコレクションに保存された tabledef を開きます。
virtual void Open(LPCTSTR lpszName);
パラメーター
lpszName
テーブル名を指定する文字列へのポインター。
解説
CDaoTableDef::RefreshLink
このメンバー関数を呼び出して、接続テーブルの接続情報を更新します。
void RefreshLink();
解説
接続テーブルの接続情報を変更するには、対応するCDaoTableDef
オブジェクトで SetConnect を呼び出し、RefreshLink
メンバー関数を使用して情報を更新します。 RefreshLink
を呼び出しても、添付テーブルのプロパティは変更されません。
変更した接続情報を強制的に有効にするには、この tabledef に基づいて開いているすべての CDaoRecordset オブジェクトを閉じる必要があります。
関連情報については、DAO ヘルプの「RefreshLink メソッド」を参照してください。
CDaoTableDef::SetAttributes
CDaoTableDef
オブジェクトの 1 つ以上の特性を示す値を設定します。
void SetAttributes(long lAttributes);
パラメーター
lAttributes
CDaoTableDef
オブジェクトによって表されるテーブルの特性。これらの定数の合計を指定できます。
定数 | 説明 |
---|---|
dbAttachExclusive |
Microsoft Jet データベース エンジンを使用するデータベースの場合、テーブルが排他的に開かれた添付テーブルであることを示します。 |
dbAttachSavePWD |
Microsoft Jet データベース エンジンを使用するデータベースの場合は、接続テーブルのユーザー ID とパスワードが接続情報と共に保存されることを示します。 |
dbSystemObject |
テーブルが Microsoft Jet データベース エンジンによって提供されるシステム テーブルであることを示します。 |
dbHiddenObject |
テーブルが Microsoft Jet データベース エンジンによって提供される非表示テーブルであることを示します。 |
解説
複数の属性を設定する場合は、ビットごとの OR 演算子を使用して適切な定数を合計することで、それらを組み合わせることができます。 接続されていないテーブルに dbAttachExclusive
を設定すると、例外が発生します。 次の値を組み合わせると、例外も発生します。
dbAttachExclusive | dbAttachedODBC
dbAttachSavePWD | dbAttachedTable
関連情報については、DAO ヘルプの「Attributes プロパティ」を参照してください。
CDaoTableDef::SetConnect
アタッチされたテーブルを表す CDaoTableDef
オブジェクトの場合、文字列オブジェクトは 1 つまたは 2 つの部分 (データベース型指定子とデータベースへのパス) で構成されます。
void SetConnect(LPCTSTR lpszConnect);
パラメーター
lpszConnect
ODBC ドライバーまたはインストール可能な ISAM ドライバーに渡す追加のパラメーターを指定する文字列式へのポインター。
解説
次の表に示すパスは、データベース ファイルを含むディレクトリの完全なパスであり、その前に識別子 "DATABASE=" を付ける必要があります。 場合によっては (Microsoft Jet および Microsoft Excel データベースと同様)、特定のファイル名がデータベース パス引数に含まれます。
Note
"DATABASE=drive:\\path" という形式の等号パス ステートメントの周囲に空白を含めないでください。 これにより、例外がスローされ、接続が失敗します。
次の表は、使用可能なデータベースの種類と、対応するデータベース指定子とパスを示しています。
データベースの種類 | 指定子 | Path |
---|---|---|
Jet データベース エンジンを使用したデータベース | "[ database ];" |
" drive :\\ path\\ filename。MDB" |
dBASE III | "dBASE III;" | " drive :\\ path" |
dBASE IV | "dBASE IV;" | " drive :\\ path" |
dBASE 5 | "dBASE 5.0;" | " drive :\\ path" |
Paradox 3.x | "Paradox 3.x;" | " drive :\\ path" |
Paradox 4.x | "Paradox 4.x;" | " drive :\\ path" |
Paradox 5.x | "Paradox 5.x;" | " drive :\\ path" |
Excel 3.0 | "Excel 3.0;" | " drive :\\ path\\ filename.XLS" |
Excel 4.0 | "Excel 4.0;" | " drive :\\ path\\ filename.XLS" |
Excel 5.0 または Excel 95 | "Excel 5.0;" | " drive :\\ path\\ filename.XLS" |
Excel 97 | "Excel 8.0;" | " drive :\\ path\ filename.XLS" |
HTML インポート | "HTML インポート;" | " drive :\\ path\ filename" |
HTML エクスポート | "HTML エクスポート;" | " drive :\\ path" |
Text | "Text;" | "drive:\\path" |
ODBC | "ODBC;DATABASE= database ;UID= user;PWD= password;DSN= datasourcename;LOGINTIMEOUT= 秒;"(これは、すべてのサーバーの完全な接続文字列ではない可能性があります。これは単なる例です。パラメーター間にスペースを含めないようにすることが非常に重要です)。 |
なし |
Exchange | "Exchange; MAPILEVEL= folderpath; [TABLETYPE={ 0 | 1 };] [PROFILE= profile;] [PWD= password;] [DATABASE= database ;]" |
"drive:\\ path\\ filename。MDB" |
Note
DAO 3.5 の時点では、Btrieve はサポートされなくなりました。
接続文字列では、二重円記号 (\\) を使用する必要があります。 SetConnect
を使用して既存の接続のプロパティを変更した場合は、後で RefreshLink を呼び出す必要があります。 SetConnect
を使用して接続プロパティを初期化する場合は、RefreshLink
を呼び出す必要はありませんが、これを選択する必要がある場合は、最初に tabledef を追加します。
パスワードが必要であっても指定されていない場合、ODBC ドライバーは、テーブルに初めてアクセスする際にログイン ダイアログ ボックスを表示し、接続を閉じて再度開くと、再度表示されます。
Create
メンバー関数にソース引数を指定することで、CDaoTableDef
オブジェクトの接続文字列を設定できます。 設定を確認して、データベースの種類、パス、ユーザー ID、パスワード、または ODBC データ ソースを決定できます。 詳細については、特定のドライバーのドキュメントを参照してください。
関連情報については、DAO ヘルプの「Connect プロパティ」を参照してください。
CDaoTableDef::SetName
このメンバー関数を呼び出して、テーブルのユーザー定義名を設定します。
void SetName(LPCTSTR lpszName);
パラメーター
lpszName
テーブルの名前を指定する文字列式へのポインター。
解説
名前は文字で始まる必要があり、最大 64 文字を含めることができます。 数字とアンダースコア文字を含めることができますが、句読点やスペースを含めることはできません。
関連情報については、DAO ヘルプの「Name プロパティ」を参照してください。
CDaoTableDef::SetSourceTableName
このメンバー関数を呼び出して、アタッチされたテーブルの名前または CDaoTableDef
オブジェクトの基になるベース テーブルの名前を指定します。これは、データの元のソースに存在するためです。
void SetSourceTableName(LPCTSTR lpszSrcTableName);
パラメーター
lpszSrcTableName
外部データベース内のテーブル名を指定する文字列式へのポインター。 ベース テーブルの場合、設定は空の文字列 ("") です。
解説
その後、 RefreshLink を呼び出す必要があります。 このプロパティ設定は、ベース テーブルの場合は空で、添付テーブルまたはコレクションに追加されていないオブジェクトの場合は読み取り/書き込み可能です。
関連情報については、DAO ヘルプの「SourceTableName プロパティ」を参照してください。
CDaoTableDef::SetValidationRule
tabledef の検証規則を設定するには、このメンバー関数を呼び出します。
void SetValidationRule(LPCTSTR lpszValidationRule);
パラメーター
lpszValidationRule
操作を検証する文字列式へのポインター。
解説
検証規則は、更新操作に関連して使用されます。 tabledef に検証規則が含まれている場合、その tabledef の更新は、データが変更される前に、事前に定義された条件と一致する必要があります。 変更が条件と一致しない場合は、 GetValidationText のテキストを含む例外が表示されます。
検証は、Microsoft Jet データベース エンジンを使用するデータベースでのみサポートされます。 式は、ユーザー定義関数、ドメイン集計関数、SQL 集計関数、またはクエリを参照できません。 CDaoTableDef
オブジェクトの検証規則では、そのオブジェクト内の複数のフィールドを参照できます。
たとえば、 hire_date および termination_date という名前のフィールドの場合、検証規則は次のようになります。
myTableDef.SetValidationRule(_T("termination_date > hire_date"));
関連情報については、DAO ヘルプの「ValidationRule プロパティ」を参照してください。
CDaoTableDef::SetValidationText
このメンバー関数を呼び出して、Microsoft Jet データベース エンジンでサポートされている基になるベース テーブルを持つ CDaoTableDef
オブジェクトの検証規則の例外テキストを設定します。
void SetValidationText(LPCTSTR lpszValidationText);
パラメーター
lpszValidationText
入力されたデータが無効な場合に表示されるテキストを指定する文字列式へのポインター。
解説
添付テーブルの検証テキストを設定することはできません。
関連情報については、DAO ヘルプの「ValidationText プロパティ」を参照してください。