[VB.net] créer relations dans bdd access et connect a la bdd

créer relations dans bdd access et connect a la bdd [VB.net] - VB/VBA/VBS - Programmation

Marsh Posté le 19-07-2008 à 00:59:47    

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 :
  1. Dim oDb As DAO.Database
  2. Dim oRlt As DAO.Relation
  3. Dim oFld As DAO.Field
  4. Set oDb = CurrentDb
  5. 'Crée la relation
  6. oRlt = oDb.CreateRelation
  7. 'Définit les propriétés
  8. oRlt.Attributes = dbRelationUpdateCascade
  9. oRlt.ForeignTable = "T_Total"
  10. oRlt.Name = "Rlt_DeviseTotal"
  11. oRlt.Table = "T_Devise"
  12. 'Crée le champ dans la relation
  13. oFld = oRlt.CreateField("ID_Devise" )
  14. 'Définit le nom de la clé externe
  15. oFld.ForeignName = "ID_Devise"
  16. 'Ajoute le champ
  17. oRlt.Fields.Append(oFld)
  18. 'Rafraîhit la collection Relations
  19. oDb.Relations.Refresh()
  20. 'Ajoute la relation
  21. oDb.Relations.Append(oRlt)
  22. 'Rafraîhit la collection Relations
  23. oDb.Relations.Refresh()
  24. 'Ferme la base de données
  25. oDb.Close()
  26. 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 :
  1. Dim dbe As New DBEngine
  2. Dim oDb As DAO.Database
  3. Dim oRlt As DAO.Relation
  4. Dim oFld As DAO.Field
  5. 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"
Reply

Marsh Posté le 19-07-2008 à 00:59:47   

Reply

Marsh Posté le 20-07-2008 à 14:53:26    

[:coolfx]


Message édité par LimDul le 20-07-2008 à 14:53:39

---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Marsh Posté le 20-07-2008 à 19:19:50    

Bonjour,
 
a priori il ne connait pas le mot "CurrentDb" si c'est bien du .NET que tu utilises
 
si je comprends bien, tu développes sous ACCESS ? d'où le "Current" ?
 
le mieux est encore de développer à distance. J'explique :
   Tu gardes tout ton code et tu crées une base de données ACCESS indépendante.
   Au lieu d'utiliser la base "en cours" ("Current" ) tu te connectes à cette base distante, c'est beaucoup mieux.
 
Sinon, j'attends tes réponses.
Codes-tu sur une base Access en direct ?


---------------
http://www.ypikay.com
Reply

Marsh Posté le 20-07-2008 à 20:13:34    

Je ne dispose pas d'access   (Or Access n'est pas ouvert (ni même installé)).
Je code uniquement dans vb.net 2003

 

Je ne peut donc pas utiliser la base "en cours".
J'avais compris que la "current" devais être une base ouverte soit par mon appli soit par access.

 

J'ai créé la base avec du code VB.
Ma base est créée dans un sous-répertoire de mon appli et je cherche à m'y connecter/à l'ouvrir pour l'utiliser.
Et là en l'occurrence à créer mes relations entre mes tables.


Message édité par LimDul le 20-07-2008 à 20:14:41

---------------
Liberkey, colection d'utilitaires sur clef USB / Silverstone DS380 - Mini tour ITX 8 baies Hot-swap 3.5"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed