次の方法で共有


CDaoDatabase::CreateRelation

データベースの主テーブルの一つ以上のフィールドと外部テーブル (データベース内のテーブルの一つ以上のフィールド間の関係を確立するには、このメンバー関数を呼び出します。

void CreateRelation( 
   LPCTSTR lpszName, 
   LPCTSTR lpszTable, 
   LPCTSTR lpszForeignTable, 
   long lAttributes, 
   LPCTSTR lpszField, 
   LPCTSTR lpszForeignField  
);
void CreateRelation( 
   CDaoRelationInfo& relinfo  
);

パラメーター

  • lpszName
    関係のオブジェクトの一意の名前。名前には、文字で始まる必要があり、最大 40 文字を含めることができます。このプロパティは、数字、およびアンダースコア文字を含めることができますが、区切り記号または空白を含めることはできません。

  • lpszTable
    関係のキー テーブルの名前。テーブルが見つからない場合、MFC は CDaoException型の例外をスローします。

  • lpszForeignTable
    リレーションシップの外部キー テーブルの名前。テーブルが見つからない場合、MFC は CDaoException型の例外をスローします。

  • lAttributes
    関係の型に関する情報を含む長い値。はいくつかありますが参照整合性を適用するには、この値を使用できます。ビットごとの OR 演算子を使用できます。|) に値結合するには(組み合わせが意味がある限り):

    • dbRelationUnique のリレーションシップは 1 対 1 です。

    • dbRelationDontEnforce の関係は適用されません (参照整合性なし)。

    • dbRelationInherited のリレーションシップは 2 回アタッチ テーブルを含むデータベース以外にあります。

    • dbRelationUpdateCascade の更新はカスケード (カスケードの詳細については、"解説"を参照)。

    • dbRelationDeleteCascade の削除は、カスケード。

  • lpszField
    主テーブルのフィールドの名前を lpszTable (では) を含む null で終わる文字列へのポインター。

  • lpszForeignField
    外部テーブルのフィールドの名前を lpszForeignTable (では) を含む null で終わる文字列へのポインター。

  • relinfo
    関係に関する情報を含む CDaoRelationInfo のオブジェクトへの参照を作成する場合。

解説

リレーションシップは、外部データベースからクエリまたはアタッチ テーブルを含めることはできません。

関係が 2 テーブルのそれぞれに 1 フィールドを含めると、関数の最初のバージョンを使用します。関係が複数のフィールドを含めると 2 番目のバージョンを使用します。関係のフィールドの最大数は 14 です。

このアクションは、基になる DAO のリレーションシップ オブジェクトを作成しますが、MFC のリレーションシップ オブジェクトをカプセル化しますが CDaoDatabaseクラスに含まれるため、MFC の実装の詳細です。MFC は関係のクラスを提供しません。

セット他の一つ以上のテーブルのカスケードの操作、データベース エンジンの更新または削除するレコードを自動的にアクティブ化する関係オブジェクトの属性関連の主キー テーブルが変更された場合の。

たとえば、Customers テーブルと Orders テーブル間で連鎖削除の関係を確立するとします。Customers テーブルからレコードを削除すると、その顧客に関連する、Orders テーブル内のレコードは削除されます。また、Orders テーブルと他のテーブル間で連鎖削除の関係を確立する場合は、それらのテーブルからレコードが自動的に Customers テーブルからレコードを削除するときに削除されます。

関連情報は、DAO ヘルプ トピック CreateRelation メソッド「」を参照してください。

必要条件

Header: afxdao.h

参照

関連項目

CDaoDatabase クラス

階層図

CDaoDatabase::DeleteRelation