Bonsoir.
J'ai réussi a créer une base de donnée au format access avec du code.
Les tables sont comme je le veut pour le moment tout vas bien.
Je voudrai maintenant réaliser des liaisons de type 1-n entre mes tables.
Je me base sur ceci: http://warin.developpez.com/access [...] 4#L4.6.5.1
Je cite:
Code :
- Dim oDb As DAO.Database
- Dim oRlt As DAO.Relation
- Dim oFld As DAO.Field
- Set oDb = CurrentDb
- 'Crée la relation
- oRlt = oDb.CreateRelation
- 'Définit les propriétés
- oRlt.Attributes = dbRelationUpdateCascade
- oRlt.ForeignTable = "T_Total"
- oRlt.Name = "Rlt_DeviseTotal"
- oRlt.Table = "T_Devise"
- 'Crée le champ dans la relation
- oFld = oRlt.CreateField("ID_Devise" )
- 'Définit le nom de la clé externe
- oFld.ForeignName = "ID_Devise"
- 'Ajoute le champ
- oRlt.Fields.Append(oFld)
- 'Rafraîhit la collection Relations
- oDb.Relations.Refresh()
- 'Ajoute la relation
- oDb.Relations.Append(oRlt)
- 'Rafraîhit la collection Relations
- oDb.Relations.Refresh()
- 'Ferme la base de données
- oDb.Close()
- oDb = Nothing
|
Or j'ai deux erreurs:
Ligne 4: Le nom 'CurrentDb' n'est pas déclaré.
Ligne 8: Le nom 'dbRelationUpdateCascade' n'est pas déclaré.
Pour la première erreur d'après mes recherches "CurrentDb" serrait la base de donnée actuellement utilisée par access.
Or Access n'est pas ouvert (ni même installé)
De plus je trouve un peut "idiot" si access est nécessaire pour le moindre programme fabriqué justement pour s'en passer...
J'en conclu donc que cela doit être la base de donnée sur laquelle une connexion est ouverte (je suis conforté dans ce raisonnement par le oDb.Close ligne 25)
J'ai donc tenté de réaliser une connexion en remplaçant les lignes 1 à 4 (comprises) par ceci:
Code :
- Dim dbe As New DBEngine
- Dim oDb As DAO.Database
- Dim oRlt As DAO.Relation
- Dim oFld As DAO.Field
- oDb = dbe.OpenDatabase(DialogueNouveauFichier.FileName, False, False, "MS Access" )
|
(DialogueNouveauFichier.FileName correspond au chemin et nom de fichier de la base de donnée créée)
Je n'ai pas d'avertissement sur ces lignes dans ma liste des tâches concernant ce changement.
Mais j'ai toujours celui pour la ligne 8:
Le nom 'dbRelationUpdateCascade' n'est pas déclaré.
J'ai quand même testé mais lors de l'exécution tout semble bien se passer.
Mon programme ne plante pas.
Par contre quand j'ouvre ma bdd avec OOo je ne vois pas la relation entre les deux tables.
Où est-ce que je me trompe ?
Qu'est-ce qui ne fonctionne pas ?
Message édité par LimDul le 19-07-2008 à 11:14:16
---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"