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








Répondre avec citation
Partager