Partager via


CDaoDatabase::CreateRelation

 

Appelez la fonction membre pour établir une relation entre un ou plusieurs champs dans une table principale dans la base de données et un ou plusieurs champs dans une table source qui contient une clé étrangère (une autre table dans la base de données).

Syntaxe

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

Paramètres

  • lpszName
    Nom unique de l'objet relation.Le nom doit commencer par une lettre et peut contenir un maximum de 40 caractères.Il peut inclure des nombres et des traits de soulignement mais ne peut pas inclure la ponctuation ou des espaces.

  • lpszTable
    Le nom de la table principale dans la relation.Si la table n'existe pas, MFC lève une exception de type CDaoException.

  • lpszForeignTable
    Le nom de table source qui contient une clé étrangère de la relation.Si la table n'existe pas, MFC lève une exception de type CDaoException.

  • lAttributes
    Une longue valeur qui contient des informations sur le type de relation.Vous pouvez utiliser cette valeur pour appliquer l'intégrité référentielle, entre autres.Vous pouvez utiliser l'opérateur de bits OR (|) pour associer chacun des valeurs (tant que la combinaison est logique) :

    • La relation dedbRelationUnique est linéaire.

    • La relation dedbRelationDontEnforce n'est pas appliquée (aucune intégrité référentielle).

    • La relation dedbRelationInherited existe dans une base de données non actuelle qui contient les deux tables jointes.

    • Les mises à jour dedbRelationUpdateCascade s'affichent en cascade (pour plus d'informations sur les cascades, consultez les notes).

    • Les suppressions dedbRelationDeleteCascade s'affichent en cascade.

  • lpszField
    Un pointeur vers une chaîne terminée par le caractère NULL qui contient le nom d'un champ de la table principale (appelée par lpszTable).

  • lpszForeignField
    Un pointeur vers une chaîne terminée par le caractère NULL qui contient le nom d'un champ dans la table source qui contient une clé étrangère (nommé par lpszForeignTable).

  • relinfo
    Une référence à un objet de CDaoRelationInfo qui contient des informations sur la relation que vous souhaitez créer.

Notes

La relation ne peut pas impliquer une requête ou une table jointe d'une base de données externe.

Utilisez la première version de la fonction lorsque la relation implique un champ dans les deux tables.Utilisez la deuxième version lorsque la relation implique plusieurs champs.Le nombre maximal de champs d'une relation est 14.

Cette action crée un objet de relation sous-jacent DAO, mais c'est un détail d'implémentation MFC étant donné que l'encapsulation MFC des objets relation est contenue dans la classe CDaoDatabase.MFC ne fournit pas de classe des relations.

Si vous définissez les attributs d'objet de relation pour exécuter des opérations en cascade, du moteur de base de données met automatiquement à jour ou supprime des enregistrements dans un ou plusieurs autres tables lorsque des modifications sont apportées aux tables de clé primaire connexes.

Par exemple, supposons que vous générez une relation de suppression en cascade entre une table Customers et une table Orders.Lorsque vous supprimez des enregistrements de la table Customers, les enregistrements de la table Orders liée à ce client sont également supprimés.En outre, si vous générez des relations de suppression en cascade entre la table Orders et d'autres tables, les enregistrements de ces tables sont automatiquement supprimés lorsque vous supprimez des enregistrements de la table Customers.

Pour des informations connexes, consultez la rubrique « méthode de CreateRelation » dans l'aide de DAO.

Configuration requise

Header: afxdao.h

Voir aussi

CDaoDatabase Class
Graphique hiérarchique
CDaoDatabase::DeleteRelation