次の方法で共有


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 メンバー関数を呼び出して、テーブル内のフィールド定義を編集できるかどうかを判断します。

  • GetValidationRuleSetValidationRule、およびGetValidationTextおよびSetValidationTextメンバー関数を使用して検証条件を取得または設定します。

  • Open メンバー関数を使用して、テーブル、ダイナセット、またはスナップショットタイプのCDaoRecordset オブジェクトを作成します。

    Note

    DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく MFC データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 DAO クラスを使用して ODBC データ ソースに引き続きアクセスできます。DAO クラスは、Microsoft Jet データベース エンジンに固有であるため、一般に優れた機能を提供します。

tabledef オブジェクトを使用して既存のテーブルを操作するか、新しいテーブルを作成するには

  1. いずれの場合も、最初に CDaoTableDef オブジェクトを構築し、テーブルが属する CDaoDatabase オブジェクトへのポインターを指定します。

  2. 次に、必要に応じて次の操作を行います。

    • 既存の保存済みテーブルを使用するには、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 オブジェクトを破棄します。

継承階層

CObject

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_pFieldInfosCDaoIndexFieldInfo構造体の配列を指す必要があります。

  • m_nFieldsCDaoFieldInfo構造体の配列内のフィールドの数を指定する必要があります。

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
テーブル名を指定する文字列へのポインター。

解説

このメンバー関数を呼び出して、接続テーブルの接続情報を更新します。

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 プロパティ」を参照してください。

関連項目

CObject クラス
階層図
CDaoDatabase クラス
CDaoRecordset クラス