Bonjour,
Je voudrais créer les relations par code, et je me trouve confronté à un problème.
Lorsque j’utilise ce code pour la création d’une seule relation celle-ci se créer bien dans la tbl system « MSysRelationships », et elle est bien visible sur le schéma relationnel.
Par contre lorsque j’utilise ce code pour créer toutes les relations elles se créent bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Private Sub Commande1_Click() Dim oDb As DAO.Database Dim oRlt As DAO.Relation Dim oFld As DAO.Field Set oDb = CurrentDb 'Crée la relation Set oRlt = oDb.CreateRelation("Rlt_AdhérentsPostes", "tbl Adhérents", _ "tbl Postes", dbRelationUpdateCascade) Crée le champ Set oFld = oRlt.CreateField("RéfAdhérent") 'Définit le nom de la clé externe oFld.ForeignName = "RéfAdhérent" 'Ajoute le champ oRlt.Fields.Append oFld 'Ajoute la relation oDb.Relations.Append oRlt 'Rafraîhit la collection Relations oDb.Relations.Refresh 'Ferme la base de données oDb.Close Set oDb = Nothing End Sub
dans la tbl system « MSysRelationships », mais pas sur le schéma relationnel.
Pour quelles raisons les relations ne se font pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub createRelations() Dim db As Database Dim rel As Relation Dim myField As DAO.Field Dim sqlString As String Dim rs As DAO.Recordset Dim cpt As Integer cpt = 0 Set db = Application.CurrentDb sqlString = "Select * from [tbl Relations]" Set rs = db.OpenRecordset(sqlString) If Not rs.EOF Then cpt = cpt + 1 MsgBox cpt rs.MoveFirst While Not rs.EOF 'Crée la relation Set rel = db.CreateRelation(rs.Fields("relationName"), rs.Fields("tableName"), rs.Fields("relForeignTable"), rs.Fields("relAttributes")) 'Crée le champ Set myField = rel.CreateField(rs.Fields("relField")) 'Définit le nom de la clé externe myField.ForeignName = rs.Fields("relForeignField") 'Ajoute le champ rel.Fields.Append myField 'Ajoute le la relation CurrentDb.Relations.Append rel 'Rafraichit la collection Relations CurrentDb.Relations.Refresh rs.MoveNext Wend End If End Sub
Merci pour votre aide.
Salutations
Partager