Database.CreateRelation, méthode (DAO)
S’applique à : Access 2013, Office 2013
Crée un objet Relation (espaces de travail Microsoft Access uniquement). .
Syntaxe
expression . CreateRelation(Name, Table, ForeignTable, Attributes)
expression Variable qui représente un objet Database.
Paramètres
Nom |
Obligatoire/facultatif |
Type de données |
Description |
---|---|---|---|
Name |
Facultatif |
Variant |
Variant (sous-type String) qui identifie par un nom unique le nouvel objet Relation. Consultez la propriété Name pour plus d’informations sur les noms de relation valides. |
Tableau |
Facultatif |
Variant |
Variant (sous-type String) représentant le nom de la table primaire dans la relation. Si la table n’existe pas avant que vous ajoutiez l’objet Relation, une erreur d’exécution se produit. |
ForeignTable |
Facultatif |
Variant |
Variant (sous-type String) représentant le nom de la table étrangère dans la relation. Si la table n’existe pas avant que vous ajoutiez l’objet Relation, une erreur d’exécution se produit. |
Attributs |
Facultatif |
Variant |
Constante ou combinaison de constantes contenant des informations sur le type de relation. Pour plus d’informations, consultez la propriété Attributes . |
Valeur renvoyée
Relation
Remarques
L'objet Relation fournit des informations au moteur de base de données Microsoft Access sur la relation entre les champs dans deux objets TableDef ou QueryDef. Vous pouvez implémenter l'intégrité référentielle en utilisant la propriété Attributes.
Si vous omettez un ou plusieurs arguments facultatifs avec la méthode CreateRelation, vous pouvez utiliser une instruction d'affectation appropriée pour définir ou redéfinir la propriété correspondante avant d'ajouter le nouvel objet à la collection. Après l'ajout de l'objet, il est impossible de modifier les paramètres de ses propriétés. Pour plus d'informations, consultez les rubriques des différentes propriétés.
Avant de pouvoir appeler la méthode Append sur un objet Relation, vous devez ajouter les objets Field appropriés pour définir la relation des tables de clé primaire et étrangère.
Si name fait référence à un objet qui est déjà membre de la collection ou si les noms d’objets Field fournis dans la collection Fields subordonnée ne sont pas valides, une erreur d’exécution se produit lorsque vous utilisez la méthode Append .
Vous ne pouvez ni établir ni conserver de relation entre une table répliquée et une table locale.
Pour supprimer un objet Relation de la collection Relations, appelez la méthode Delete sur la collection.
Exemple
Cet exemple utilise la méthode CreateRelation pour créer une Relation entre l'objet TableDef Employees et un nouvel objet TableDef appelé Departments. Cet exemple illustre également comment la création d'une nouvelle Relation entraîne la création de tout Indexes nécessaire dans la table étrangère (l'index DepartmentsEmployees de la table Employees).
Sub CreateRelationX()
Dim dbsNorthwind As Database
Dim tdfEmployees As TableDef
Dim tdfNew As TableDef
Dim idxNew As Index
Dim relNew As Relation
Dim idxLoop As Index
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
With dbsNorthwind
' Add new field to Employees table.
Set tdfEmployees = .TableDefs!Employees
tdfEmployees.Fields.Append _
tdfEmployees.CreateField("DeptID", dbInteger, 2)
' Create new Departments table.
Set tdfNew = .CreateTableDef("Departments")
With tdfNew
' Create and append Field objects to Fields
' collection of the new TableDef object.
.Fields.Append .CreateField("DeptID", dbInteger, 2)
.Fields.Append .CreateField("DeptName", dbText, 20)
' Create Index object for Departments table.
Set idxNew = .CreateIndex("DeptIDIndex")
' Create and append Field object to Fields
' collection of the new Index object.
idxNew.Fields.Append idxNew.CreateField("DeptID")
' The index in the primary table must be Unique in
' order to be part of a Relation.
idxNew.Unique = True
.Indexes.Append idxNew
End With
.TableDefs.Append tdfNew
' Create EmployeesDepartments Relation object, using
' the names of the two tables in the relation.
Set relNew = .CreateRelation("EmployeesDepartments", _
tdfNew.Name, tdfEmployees.Name, _
dbRelationUpdateCascade)
' Create Field object for the Fields collection of the
' new Relation object. Set the Name and ForeignName
' properties based on the fields to be used for the
' relation.
relNew.Fields.Append relNew.CreateField("DeptID")
relNew.Fields!DeptID.ForeignName = "DeptID"
.Relations.Append relNew
' Print report.
Debug.Print "Properties of " & relNew.Name & _
" Relation"
Debug.Print " Table = " & relNew.Table
Debug.Print " ForeignTable = " & _
relNew.ForeignTable
Debug.Print "Fields of " & relNew.Name & " Relation"
With relNew.Fields!DeptID
Debug.Print " " & .Name
Debug.Print " Name = " & .Name
Debug.Print " ForeignName = " & .ForeignName
End With
Debug.Print "Indexes in " & tdfEmployees.Name & _
" TableDef"
For Each idxLoop In tdfEmployees.Indexes
Debug.Print " " & idxLoop.Name & _
", Foreign = " & idxLoop.Foreign
Next idxLoop
' Delete new objects because this is a demonstration.
.Relations.Delete relNew.Name
.TableDefs.Delete tdfNew.Name
tdfEmployees.Fields.Delete "DeptID"
.Close
End With
End Sub