Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 12h32   #1
Membre régulier
 
Homme Jacques
Inscription : août 2005
Messages : 441
Détails du profil
Informations personnelles :
Nom : Homme Jacques
Âge : 66
Localisation : France, Val d'Oise (Île de France)

Informations forums :
Inscription : août 2005
Messages : 441
Points : 77
Points : 77
Par défaut Créations des Relations par VBA

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.

Code :
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
Par contre lorsque j’utilise ce code pour créer toutes les relations elles se créent bien
dans la tbl system « MSysRelationships », mais pas sur le schéma relationnel.

Code :
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
Pour quelles raisons les relations ne se font pas ?

Merci pour votre aide.

Salutations
jmde est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h51.


 
 
 
 
Partenaires

Hébergement Web