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

Messages postés
96
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
9 février 2010
- - Dernière réponse : hkool81
Messages postés
1
Date d'inscription
vendredi 7 septembre 2007
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!
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
79
Date d'inscription
mardi 4 juin 2002
Dernière intervention
29 juillet 2005
3
Merci
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

Dire « Merci » 3

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

Codes Sources a aidé 106 internautes ce mois-ci

Messages postés
96
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
9 février 2010
0
Merci
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
Dernière intervention
17 septembre 2007
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.