Comment créer les relations entre les tables d'1 BD avec du code? [Résolu]

Signaler
Messages postés
96
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
1
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 septembre 2007
-
salut à vous !
Bon j ai un diagramme de classe avec des relations entre elles j'arrive à créer les tables correspondantes au classes mais le pb c comment créer les relations entre les tables de la BD(clé primaire,clé étrangère...)

et merci!

3 réponses

Messages postés
79
Date d'inscription
mardi 4 juin 2002
Statut
Membre
Dernière intervention
29 juillet 2005

Bonjour,

C'est une base de données au format access?
Tu utilise VB6?

si oui : Voici un exemple de création de tables, de champs, et de relations en VB6

Public Sub CréationTables()
          Dim T As DAO.TableDef
          Dim f As DAO.Field
          Dim r As DAO.Relation
          Dim ix As DAO.Index
          Dim prp As DAO.Property
          Dim x As Long
          
          On Error GoTo TraiteErreur
          
          ' ---- Création Table Composants ----
          
          Set T = Db.CreateTableDef("Composants")
          
          'Id      : NuméroAuto + PrimaryKey
          Set f = T.CreateField("Id", DAO.DataTypeEnum.dbLong)
          f.Attributes = DAO.dbAutoIncrField
          T.Fields.Append f
          
          Set ix = T.CreateIndex("PrimaryKey")
          With ix
                    .Fields.Append .CreateField("Id")
                    .Primary = True
          End With
          T.Indexes.Append ix
          
          'Libellé : Texte(50) + Chaîne vide autorisée
          Set f = T.CreateField("Libellé", DAO.DataTypeEnum.dbText, 50)
          f.AllowZeroLength = True
          f.Required = False
          T.Fields.Append f

          Db.TableDefs.Append T
         
          
          ' ---- Création Table Constituants ----
          
          Set T = Db.CreateTableDef("Constituants")
          
          'Id      : NuméroAuto + PrimaryKey
          Set f = T.CreateField("Id", DAO.DataTypeEnum.dbLong)
          f.Attributes = DAO.dbAutoIncrField
          T.Fields.Append f
          
          Set ix = T.CreateIndex("PrimaryKey")
          With ix
                    .Fields.Append .CreateField("Id")
                    .Primary = True
          End With
          T.Indexes.Append ix
          
          'Flux    : Numérique + Décimal Auto
          Set f = T.CreateField("Flux", DAO.DataTypeEnum.dbLong)
          f.DefaultValue = 0
          T.Fields.Append f
          
          'Composant    : Numérique + Décimal Auto
          Set f = T.CreateField("Composant", DAO.DataTypeEnum.dbLong)
          f.DefaultValue = 0
          T.Fields.Append f
          
          'Pourcentage  : Réel double + 2 Décimals
          Set f = T.CreateField("Pourcentage", DAO.DataTypeEnum.dbDouble)
          f.DefaultValue = 0
          T.Fields.Append f
          
          Db.TableDefs.Append T

          Db.TableDefs.Refresh
          Set T = Db.TableDefs("Constituants")
          Set f = T.Fields("Pourcentage")
          Set prp = f.CreateProperty("DecimalPlaces", dbByte, CByte(2))
          f.Properties.Append prp
          T.Fields.Refresh
          
                   
          ' ----- Relation -> Composants vers constituants -----
          
          Set r = Db.CreateRelation()
          With r
                    .Name = "ComposantsConstituants"
                    .Table = "Composants"
                    .ForeignTable = "Constituants"
                    .Attributes = DAO.dbRelationLeft
          
                    Set f = .CreateField("Id")
                    f.ForeignName = "Composant"
                    r.Fields.Append f
          End With
          Db.Relations.Append r
       

TraiteErreur:
        If Err = 0 Then
                Set T = Nothing
                Set f = Nothing
                Set ix = Nothing
                Set r = Nothing
                MsgBox "Les Tables Constituants et Composants ont été créées avec succés.", vbInformation, "Confirmation de création"
        Else
                Set T = Nothing
                Set f = Nothing
                Set ix = Nothing
        End If
End Sub


Ricks27
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 308 internautes nous ont dit merci ce mois-ci

Messages postés
96
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
9 février 2010

merci Ricks27!

je vais adapter ton code avec le mien et je pensa que ça va marcher!
merci une autre fois
a+
Messages postés
1
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
17 septembre 2007

salut tout le monde
jesuis vraiment heureux d'avoir ce site dont je suis tres reconnaissant et aussi aux navigateurs de ce site
donc ma demande est la suivante

comment declarer un workspace et un base de donnée de plusieurs tables dans un projet de vb6
merci
jesuis encore un dibuttant