Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2753 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1761834
LimDul
Comment ça j'ai tort ?
Posté le 19-07-2008 à 00:59:47  profilanswer
 

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"
mood
Publicité
Posté le 19-07-2008 à 00:59:47  profilanswer
 

n°1762192
LimDul
Comment ça j'ai tort ?
Posté le 20-07-2008 à 14:53:26  profilanswer
 

[: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"
n°1762238
erwan83
Du Shift DEL tu te méfieras !
Posté le 20-07-2008 à 19:19:50  profilanswer
 

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
n°1762243
LimDul
Comment ça j'ai tort ?
Posté le 20-07-2008 à 20:13:34  profilanswer
 

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"

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
code dans VB pour definir arguments d'une fonction dans Excel[VB] Font.name et Font.Size en ReadOnly
EER: notation connect to columnsLiaison Access Help svp
ACCESS - Comment être averti de la date d'anniversaire d'un client?[AS3-résolu] Créer une classe
programme access 2003ouvrir csv sans le créer
Formulaire access et initialisation[VB.NET] Fichier txt vers excel
Plus de sujets relatifs à : [VB.net] créer relations dans bdd access et connect a la bdd


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR