none
Pb connexion base Access 2003 et windows 7 64 bits en C# RRS feed

  • Question

  • Bonjour,

    A mon boulot, j'ai un système Windows 7 64 bits et un pack office 2003 32 bits

    J'aimerais, en C#, créer et me connecter à une base Access mais j'obtiens un message d'erreur disant que le fournisseur Microsoft.Jet.OLEDB.4.0 n'est pas inscrit sur l'ordinateur local.

    J'ai parcouru plusieurs sites pour en savoir un peu plus et je m'aperçois qu'il y a une incompatibilité entre système 64 bits et applications 32 bits. Que faire ?

    Merci d'avance pour votre aide - Christian
    vendredi 28 janvier 2011 13:21

Réponses

  • L'utilisation du caractère d'échappement pour \ est contradictoire avec l'utilisation de @. Persist Security Info=False ne me parait pas avoir de sens pour une création.

    Donc qq chose comme

    string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +Environment.GetFolderPath(Environment.SpecialFolder.Desktop)+@"\Test1.mdb";
    

     fonctionne chez moi (je suis avec C# Express en config x86 sur un OS 64 bits).

    De préférence, lorsqu'une erreur est rencontrée toujours indiquer l'erreur exacte rencontrée.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Elyott59 samedi 29 janvier 2011 19:24
    samedi 29 janvier 2011 19:10
    Modérateur

Toutes les réponses

  • Bonjour,

    Moi j'essayerai de désinstaller office 2003 32 bits et d'installer un office 2007 64 bits

     


    fred
    vendredi 28 janvier 2011 14:22
  • Existe t il des packs office 2007 32 bits et des packs office 2007 64 bits ?
    vendredi 28 janvier 2011 22:37
  • Bonjour,

    Il me semble que Office 2007 (et donc surtout les pilotes correspondants) est toujours en 32 bits. C'est à partir d'Office 2010 qu'une version 64 bits est disponible. Selon ce que l'on veut faire les fichiers redistribuables sont ici : http://www.microsoft.com/downloads/fr-fr/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d (et donc choisir la version x64).

    Pour être complet, le problème est qu'une application et ses pilotes doivent utiliser la même architecture (x86 tous les deux ou x64 tous les deux).

    Par défault la compilation se fait en "AnyCPU" et l'application va donc tourner en 32 bits ou 64 bits selon le framework trouvé (normalement sur une machine x64, les deux frameworks x86 et x64 sont installés). Une autre solution serait de forcer la compilation en x86 ce qui permettra d'utiliser le pilote 32 bits actuellement installé.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 29 janvier 2011 12:32
    Modérateur
  • Existerai t il un moyen au sein de Visual Studio 2005 de forcer la compilation en x86 ? Si oui, comment y remédier ?

    Merci de votre aide

    Christian

    samedi 29 janvier 2011 16:09
  • C'est ici : http://msdn.microsoft.com/fr-fr/library/5b4eyb0k(v=VS.80).aspx (paramètres avancés du compilateur dans les propriétés du projet).

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 29 janvier 2011 16:46
    Modérateur
  • J'ai réussi à forcer la compilation en x86 mais maintenant je peux :

    lire que ce soit avec le provider "Microsoft.Jet.OLEDB.4.0" pour Office inférieur à 2007 et le provider "Microsoft.ACE.OLEDB.12.0" pour Office 2007.

    Mais question création du fichier Access j'obtiens une erreur que ce soit le provider.

    Pour cela j'utilise ce bout de code :

    using ADOX;

    ---

    private void btnCreate_Click(object sender, EventArgs e) {
                try {
                    Catalog cat = new Catalog();

                    //string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Test1.mdb;Persist Security Info=False;";
                    string connstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Test1.accdb;Persist Security Info=False;";
                    cat.Create(connstr);
                    MessageBox.Show("Base de données créée !!!");
                }
                catch (Exception ex) {
                    MessageBox.Show("Target : " + ex.TargetSite + "\nMessage : " + ex.Message + "\nSource : " + ex.Source + "\nStack" + ex.StackTrace + "\nInner : " + ex.InnerException);
                }
            }

     

     

    samedi 29 janvier 2011 17:39
  • L'utilisation du caractère d'échappement pour \ est contradictoire avec l'utilisation de @. Persist Security Info=False ne me parait pas avoir de sens pour une création.

    Donc qq chose comme

    string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +Environment.GetFolderPath(Environment.SpecialFolder.Desktop)+@"\Test1.mdb";
    

     fonctionne chez moi (je suis avec C# Express en config x86 sur un OS 64 bits).

    De préférence, lorsqu'une erreur est rencontrée toujours indiquer l'erreur exacte rencontrée.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Elyott59 samedi 29 janvier 2011 19:24
    samedi 29 janvier 2011 19:10
    Modérateur