none
[RESOLU] Connexion Base de donnée Access 2010 avec VB 10 Express RRS feed

  • Question

  • Bonjour à tous ! 

    J'ai un projet pour mon lycée qui concerne une gestion d'accès au self et à d'autres applications à travers une application mobile basée sur une reconnaissance de QR CODE.

    Mon problème se situe au niveau de la gestion de toutes ces données. En effet, il faut que je centralise tout un tas de données qui concernent les informations de connexion, les identifiants etc... Pour cela, je compte utiliser une base de donnée ACCESS 2010 (format accdb) pour y stocker mes différentes tables. J'ai acheté un bouquin de programmation en VB10 (je débute, je ne suis pas du tout informaticien mais électrotechnicien passionné par l'informatique) qui m'indique comment connecter une base de donnée ACCESS, mais au format .mdb.

    Ma question est quel est le code à modifier dans cette application pour me permettre de pouvoir accéder à ma base de donnée au format accdb et non au format .mdb, ou la solution à mon problème qui est que même la connexion à cette base enregistrée au format .mdb est impossible ! 

    Voilà mon code : 

    Imports System.Data Imports System.Data.OleDb Public Class BDD_eleve_acceuil Dim Connexion As String Dim ConnexionOLE As OleDbConnection = New OleDbConnection() Dim da As OleDbDataAdapter Dim ds As DataSet Dim dv As DataView Dim cb As OleDbCommandBuilder

    Private Sub AccéderÀLaBaseDeDonnéeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AccéderÀLaBaseDeDonnéeToolStripMenuItem.Click
            Dim debut_connexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
            Connexion = debut_connexion & Fenêtre_paramètres.BDD_élèves
            TextBox1.Text = Connexion
            ConnexionOLE.ConnectionString = Connexion
            ConnexionOLE.Open()
            da = New OleDbDataAdapter("Select * from T_TravailObjet", ConnexionOLE)
            ds = New DataSet()
            da.Fill(ds, "mytable")
            dv = ds.Tables("mytable").DefaultView
            ConnexionOLE.Close()
            DataGridView1.DataSource = dv
            dv.AllowEdit = False
        End Sub

    Le problème se trouve au niveau de la ligne suivante : 

      ConnexionOLE.Open()

    L'éditeur me renvoie comme erreur que le format de ma base de donnée n'est pas reconnu, ni en .mdb, ni en .accdb

    Merci de votre aide précieuse.

    Quentin



    vendredi 28 décembre 2012 17:02

Réponses

  • Ok, déjà que donne

      MessageBox.Show(System.Environment.Is64BitProcess.ToString)

    VB.NET permet de générer une application qui va s'exécuter :
    - toujours en 32 bits (c'est le cas par défaut avec VB Express sauf erreur de ma part)
    - ou alors toujours en 64 bits (et donc ne fonctionnera pas sur OS 32 bits)
    - ou alors en 32 bits si OS 32 bits et en 64 bits si OS 64 bits

    Si l'application est en 32 bits, elle ne peut utiliser que la version 32 bits de Microsoft.ACE.OLEDB.12.0 et si elle est en 64 bits, elle ne peut utiliser que la version 64 bits. Je pense qu'actuellement on est dans la situation par défaut avec VB Express donc 32 bits (ce qui afficherait donc "False" avec la ligne de code ci-dessus). Si oui, on a donc deux solutions :

    - désinstaller la version 64 bits de Microsoft.ACE.OLEDB.12.0 et installer la version 32 bits (on ne peut pas l'installer car le message indique que c'est déjà installé en 64 bits ?)

    - ou alors dans VB Express changer la configuration de génération pour générer une applicarion 64 bits (Outils, Settings, Paramètres avancées ce qui devrait afficher une barre d'outils "Configuration Manager" qui va permettre de créér une nouvelle configuration x64 ou "Any CPU")

    Je suggère la solution 1 qui sera sans doute plus simple pour l'instant.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    dimanche 30 décembre 2012 11:02
    Modérateur

Toutes les réponses

  • Bonjour,

    Essayez http://www.microsoft.com/fr-fr/download/details.aspx?id=13255 et donc la chaine de connexion utilisera Microsoft.ACE.OLEDB.12.0  au lieu de Microsoft.Jet.OLEDB.4.0.

    Egalement installer la version (x64 ou pas) qui correspond à votre situation (sortez par exemple la valeur de http://msdn.microsoft.com/fr-fr/library/system.environment.is64bitprocess.aspx et c'est donc la version x64 qui est nécessaire si vrai, l'autre si faux).

    Si cela ne marche, donnez plutôt le texte exact de l'erreur pour éviter tout problème d'inteprétation. Vérifiez aussi bien la valeur que vous avez construit comme chaine de connexion (au cas où elle ne serait pas générée correctement).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    vendredi 28 décembre 2012 19:51
    Modérateur
  • Bonjour,

    Je pense que votre solution est la bonne, j'ai téléchargé la version x64 du module mais en mode test l'application me donne : 

    "Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas inscrit sur l'ordinateur local."

    dès qu'il atteint la ligne du programme suivante : 

    ConnexionOLE.Open()
    samedi 29 décembre 2012 13:14
  • Et vous avez vous bien testé que votre code s'exécute en x64 (ce n'est pas parce que votre OS est 64 bits que c'est le cas notamment sur la version Express qui doit être en x86 par défaut) ? Sinon installer l'autre EXE ou changer de mode...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    samedi 29 décembre 2012 13:42
    Modérateur
  • J'utilise MS Access en version x64, le logiciel x86 de la page : http://www.microsoft.com/fr-fr/download/details.aspx?id=13255 ne veut pas se faire installer sur mon système.

    Qu'entendez vous par " changer de mode..." ?

    samedi 29 décembre 2012 14:01
  • Ok, déjà que donne

      MessageBox.Show(System.Environment.Is64BitProcess.ToString)

    VB.NET permet de générer une application qui va s'exécuter :
    - toujours en 32 bits (c'est le cas par défaut avec VB Express sauf erreur de ma part)
    - ou alors toujours en 64 bits (et donc ne fonctionnera pas sur OS 32 bits)
    - ou alors en 32 bits si OS 32 bits et en 64 bits si OS 64 bits

    Si l'application est en 32 bits, elle ne peut utiliser que la version 32 bits de Microsoft.ACE.OLEDB.12.0 et si elle est en 64 bits, elle ne peut utiliser que la version 64 bits. Je pense qu'actuellement on est dans la situation par défaut avec VB Express donc 32 bits (ce qui afficherait donc "False" avec la ligne de code ci-dessus). Si oui, on a donc deux solutions :

    - désinstaller la version 64 bits de Microsoft.ACE.OLEDB.12.0 et installer la version 32 bits (on ne peut pas l'installer car le message indique que c'est déjà installé en 64 bits ?)

    - ou alors dans VB Express changer la configuration de génération pour générer une applicarion 64 bits (Outils, Settings, Paramètres avancées ce qui devrait afficher une barre d'outils "Configuration Manager" qui va permettre de créér une nouvelle configuration x64 ou "Any CPU")

    Je suggère la solution 1 qui sera sans doute plus simple pour l'instant.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    dimanche 30 décembre 2012 11:02
    Modérateur
  •   MessageBox.Show(System.Environment.Is64BitProcess.ToString)

    Cette fonction me retourne une message box qui contient "False", donc mon application est bien une application 32 bits.

    Cependant, l'installation d'Access Database Engine (x86).exe demeure impossible. J'ai désinstallé la version 64 bits, puis lors d'un essai d'installation en 32 bits, le programme d'installation me retourne ce message : "Vous ne pouvez pas installer la version 32 bits du moteur de base de données Microsoft Access 2010, car vous disposez actuellement de la version 64 bits du moteur de base de données Microsoft Access 2010, vous devez d'abord désinstaller la version 64 bits des produits Office. Après avoir désinstallé le ou les produits suivants, réexécutez le programme d'installation pour installer la version 32 bits du moteur de base de données Microsoft Access 2010 : Microsoft Office Professional Plus 2010, Microsoft Office Project Professional 2010."

    Et lors de l'essai de mon application, la chaine de connexion à ma base access ne fonctionne pas, et me renvoie ce message : "(Logo_Attention) L'exception InvalidOperationException n'a pas été gérée : Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas inscrit sur l'ordinateur local."

    Je vais tenter la solution de l'any CPU, et je vous donnerai le résultat en suivant.

    Par contre, une question me vient à l'esprit, lorsque je lancerai cette application sur un autre PC que sur le mien, il faudra également que j'installe donc l'access database engine ?

    Merci encore

    • Marqué comme réponse Quentin MANON dimanche 30 décembre 2012 14:26
    • Non marqué comme réponse Quentin MANON dimanche 30 décembre 2012 14:27
    dimanche 30 décembre 2012 13:44
  • Bon, la fonction Any CPU fonctionne ! Bon point ! (même si les performances en sont un peu altérées, pas grave ;) )

    Merci Beaucoup !

    dimanche 30 décembre 2012 14:26