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

Résolu
cs_aminix9 Messages postés 96 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 9 février 2010 - 25 nov. 2004 à 00:59
hkool81 Messages postés 1 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 septembre 2007 - 17 sept. 2007 à 15:35
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

Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
25 nov. 2004 à 11:32
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
cs_aminix9 Messages postés 96 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 9 février 2010
26 nov. 2004 à 00:48
merci Ricks27!

je vais adapter ton code avec le mien et je pensa que ça va marcher!
merci une autre fois
a+
0
hkool81 Messages postés 1 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 17 septembre 2007
17 sept. 2007 à 15:35
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
0
Rejoignez-nous