Se connecter à une base Access avec ADOX

Résolu
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 12 juil. 2012 à 22:29
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 14 juil. 2012 à 11:21
Bonjour,
j'ai un problème pour me connecter à une base Access en utilisant ADOX. (ADOX me permet de créer ou modifier la structure de la base (Ajout de tables, colonnes, relations....etc)).

En fait pour comprendre mon problème il faut comprendre plusieurs chose :
1- Il y a un un problème d'incompatibilité descendante de la référence "Microsoft Data Objects xx Library" (nécessaire pour instancier une connexion ADODB.
Ce qui veux dire qu'une application compilé à partir de Win7 SP1 ne peux pas fonctionner sur les versions de Windows antérieur.
Source : Tapez le texte de l'url ici.

2- J'ai essayé plusieurs fois de recompiler mon projet à l'aide du correctif proposé par Microsoft sans succès.

Voici le code :
Dim Cnx As New ADODB.Connection ' Ce code lève une exception sur les versions de windows anterieur à Win7 SP1.
Connstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & PathName & ";Jet OLEDB:Database Password=" & PASSWORDdb & ";"
Cnx.ConnectionString = Connstr
 
Dim Catalog As ADOX.Catalog
Cnx.Open()
Catalog.ActiveConnection = Cnx


A t'on vraiment besoin de cette référence qui ne sert quasiment dans mon code sauf pour fournir une connexion au catalogue ADOX ?

Merci beaucoup si vous pouvez m'aider. Je cherche partout depuis plusieurs semaine sans trouver une solution.

4 réponses

Utilisateur anonyme
13 juil. 2012 à 02:33
Bonjour,


Connstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & PathName & ";Jet OLEDB:Database Password=" & PASSWORDdb & ";"
Cnx.ConnectionString = Connstr


Pour un Access 2007 ou 2010 commence par remplacer
le moteur Jet par le moteur ACE.

Si ce n'est pas assez, essaie ceci :
Clique sur le menu Générer - Va dans le gestionnaire de configuration et choisis x86 au lieu de AnyCpu. Au lieu d'avoir une application 64 bits, tu vas avoir une application 32 bits, mais cela devrait quand même marcher pour un bout.
3
Utilisateur anonyme
13 juil. 2012 à 18:10
Bonjour,


Bref, pour éviter ce genre de désagrément je me suis intéressé au moteur ACE qui semble être un bon choix pour l'avenir. En revanche, (merci de me corriger si je me trompe) ce moteur n'est pas inclus dans Windows. Celui-ci doit être installé avec Microsoft Access ou avec Microsoft Access 2010 Runtime ou avec Microsoft Access 2010 Redistribuable.


Je crois bien que oui. Access 2007 et Access 2010 sont incompatibles avec le moteur Jet. Je n'ai plus Access et je ne peux pas essayer le moteur ACE avec Access 2002 ou Access 203.


Concernant Windows 7 x32 et x64, mon programme fonctionne donc a priori le moteur Jet est installé mais est t'il vraiment intégré a Windows7 SP1 x32 et x64) ?


Je ne sais pas s'il vient avec Windows 7, mais je sais qu'il a été exclu de MDAC à un certain moment. Il y a peut-être moyen de le télécharger à partir du centre de téléchargements de Microsoft.


l'utilisation du moteur ACE me permet t'il de supprimer la référence .COM MDAO ?
Dans ce cas qu'elle connexion dois-je fournir a la propriété Catalog.ActiveConnection ?


Comme j'ai dit plus haut, je n'ai plus Access. Cependant avec VB.net on peut en principe agir directement sur la Base de données au moyen d'instructions SQL. Il faudrait tester de cette façon.
3
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
13 juil. 2012 à 15:48
Bonjour et merci de m'avoir répondu.
J'ai réussi à faire fonctionner mon programme sous Windows XP x32. Pour une raison inconnue le problème persistait malgré l'installation du correctif sur mon pc de développement (Windows 7 x64) suivi d'un redémarrage et d'une recompilation du projet.
Cela c'est mis à fonctionner 3 jours après (Entre temps mon pc s'est mis à jour, bien que je n'ai vu aucun rapport entre ces mises à jours et MDAO).

Bref, pour éviter ce genre de désagrément je me suis intéressé au moteur ACE qui semble être un bon choix pour l'avenir. En revanche, (merci de me corriger si je me trompe) ce moteur n'est pas inclus dans Windows. Celui-ci doit être installé avec Microsoft Access ou avec Microsoft Access 2010 Runtime ou avec Microsoft Access 2010 Redistribuable.
Le Moteur Microsoft Jet est quant à lui intégré depuis les versions Windows 2000 jusqu’à Windows Vista. Concernant Windows 7 x32 et x64, mon programme fonctionne donc a priori le moteur Jet est installé mais est t'il vraiment intégré a Windows7 SP1 x32 et x64) ?

l'utilisation du moteur ACE me permet t'il de supprimer la référence .COM MDAO ?
Dans ce cas qu'elle connexion dois-je fournir a la propriété Catalog.ActiveConnection ?

Merci à vous si vous pouvez m'apporter votre aide une nouvelle fois.
0
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
14 juil. 2012 à 11:21
Merci beaucoup cmarcotte.
Hélas je maîtrise mal les instructions SQL, pour l'instant je continue avec ADOX.
Ces informations me serviront en cas de problèmes de compatibilité, j'utiliserais à ce moment là le moteur ACE.
Pour l'instant je conserve JET puisque cela fonctionne grâce au correctif et que ça ne me gène pas de travailler sur une base Access antérieur à 2007, on verra à l'avenir comment évolue les versions de Windows. Si Jet n'est plus du tout supporté, j'utiliserais le moteur Jet en espérant. Visiblement Microsoft a assuré une compatibilité descendante avec le code VB.NET.
0
Rejoignez-nous