"Microsoft.ACE.OLEDB.12.0 ' provider n'est pas enregistré sur la machine locale tandis que l'exportation de données vers MS ACCESS

je commence à utiliser Microsft.ACE.OLEDB 12.0. Je crée une application Winforms VS 2010.

et créer une fonction pour exporter les données de la grille de données vers le fichier D'accès MS. I en utilisant Microsoft Oledb

pour exporter les données de la grille de données vers le fichier D'accès MS.Mais je reçois cette erreur quand j'essaie d'exporter

le

données à ms access.

s'il vous Plaît voir l'image ci-dessous.

enter image description here

je me réfère également à la Microsoft.Office 12.0 Object Library dans ma demande.

enter image description here

Lot De Configuration De La Compilation

enter image description here

28
demandé sur halfer 2013-07-18 10:34:56

5 réponses

la référence aux bits Access Interop n'a rien à voir avec votre exception et L'accès Interop n'est pas nécessaire pour utiliser les classes dans le System.Data.OleDb .

le problème se pose lorsque vous avez votre application compilée pour AnyCPU Platform , que vous utilisez un système 64bit et que le système installé ADO.NET fournisseur (Microsoft ACE.OLEDB.12.0) est la version 32bit.

lorsque vous utilisez la plate-forme cible AnyCpu , votre code sera exécuté comme suit: Code 64bit sur les systèmes 64bit et Code 32bit sur les systèmes 32bit. Une application exécutée comme 64bit ne peut pas utiliser les pilotes 32bit (et vice versa). Maintenant ajouter au mélange le fait que Microsoft.ACE.OLEDB.12.0 a deux versions différentes. Un pour 64 bits et un pour 32 bits et ils ne peuvent pas être installés ensemble sur la même machine.

la solution la plus simple est de changer la plateforme cible de votre application à travers Visual Studio menu

 BUILD -> Configuration Manager -> Active Solution Platform -> x86

Si l'option x86 n'est pas déjà présente, sélectionnez Nouvelle, nommez-la x86 , Copy Settings from AnyCPU et cochez Create new project platforms

si vous pensez que l'utilisation d'une application 32bit sur un système d'exploitation 64bit est une perte de performance ou quelque chose à éviter, alors pensez-y à deux fois et lisez cette référence où les pour et les contre de toute Unité de commande sont examinés de manière critique. Si vous n'avez pas de raison particulière d'utiliser AnyCpu c'est mieux de rester avec x86 .

bien sûr, une autre option est de désactiver la version 32bit et d'installer la version 64bit D'ACE d'ici et ensuite vous Exécuter application comme AnyCpu sur les systèmes 64bit. Mais cela pourrait être un cauchemar pour vos scénarios de déploiement. Que faire si la version 32Bit de Microsoft Office est installée sur votre machine cible x64? Office installe sa version compatible bit D'ACE et, comme dit, il n'est pas possible d'avoir 32bit et 64bit D'ACE installés sur le même machine.

Maintenant, vous devez également demander à votre client de réinstaller Office en tant que 64bit pour garder votre application 64bit heureuse.

mise à JOUR



La situation a un peu changé avec les nouvelles versions de Visual Studio. Il y a maintenant une nouvelle option qui est la valeur par défaut pour les nouveaux projets. Il est appelé AnyCPU préfèrent le mode 32bit . Plus de détails sur ce lien: ce que AnyCPU signifie vraiment à partir de .net 4.5 et Visual Studio 11 et un autre post intéressant (bien que concernant Sql Server Compact) est celui-ci le problème avec N'importe quel CPU-Prefer 32 bit-BadImageFormatException

50
répondu Steve 2015-02-10 18:15:40

Changement dans son pool d'Application 'paramètres avancés' permet d'exécuter des programmes 32 bits... qu'il a fait pour moi.

8
répondu Freguz 2013-12-21 23:29:39

j'ai un problème similaire lorsque nous lisons le fichier Excel.

Histoire de la question:

nous avons récemment migré notre application de 32-bit à 64-bit en raison de l'exigence de mémoire. Pour cela, nous avons migré Notre windows 7 de 32-bit à 64-bit. Mais nous avons quand même installé un bureau 32 bits sur nos machines.

parce que, de cela, nous avons eu ce problème lors de l'importation de données Excel dans l'application.

Solution,

j'ai téléchargé la version 64 bits du http://www.microsoft.com/en-us/download/details.aspx?id=13255 et installé avec argument comme,

AccessDatabaseEngine_x64.exe / passif

sans changement de code, mon problème est résolu.

Note:

sur OS 64-bit et bureau 64-bit, ma fonctionnalité fonctionnait très bien sans cette correction. Ce correctif n'est requis lors de l' notre application est 64-bit tournant sur 64-bit OS qui a 32-bit office installé sur elle.

6
répondu Rahul Techie 2015-02-13 08:59:39

chemin de Base:

Application: MVC C# , Pour Win Server 64 bit:

  1. Supprimer microsoft office 32 bits installé.

  2. lien de Téléchargement: https://www.microsoft.com/en-us/download/details.aspx?id=13255

  3. sélectionnez Télécharger 64 bits et ensuite l'installer sur le serveur(si vous ne pouvez pas programme d'installation. Veuillez vérifier à nouveau 1 point).

  4. de nouveau accédez à votre demande. entrez la description de l'image ici

1
répondu Joh 2015-12-09 08:28:41

pour moi installer Microsoft Access Database Engine 2010 Redistribuable corrigé le problème, la version 32 bits.

0
répondu Erik Pienknagura Dolberg 2018-05-22 03:31:31