O provedor ‘Microsoft.ACE.OLEDB.12.0’ não está registrado na máquina local enquanto exporta dados para o MS ACCESS

Eu sou iniciante no uso do Microsft.ACE.OLEDB 12.0. Eu crio um aplicativo WinForms VS 2010.

E crie uma function para exportar dados da grade de dados para o arquivo do MS Access. Eu usando o Microsoft Oledb

para exportar os dados da grade de dados para o arquivo do MS Access. Mas eu recebo esse erro quando tento exportar

a

dados para access ms.

Por favor, veja a imagem abaixo.

insira a descrição da imagem aqui

Eu também consulte o Microsoft.Office 12.0 Object Library no meu aplicativo.

insira a descrição da imagem aqui

Configuração de compilation em lote

insira a descrição da imagem aqui

A referência aos bits do Access Interop não tem nada a ver com a sua exceção e o Access Interop não é necessário para usar as classs no System.Data.OleDb .

O problema surge quando você tem seu aplicativo compilado para AnyCPU Platform , você está executando em um sistema de 64 bits e o provedor ADO.NET instalado (Microsoft ACE.OLEDB.12.0) é a versão de 32 bits.

Ao usar a plataforma de destino AnyCpu seu código será executado como código de 64 bits em sistemas de 64 bits e como código de 32 bits em sistemas de 32 bits. Um aplicativo executado como 64 bits não pode usar drivers de 32 bits (e vice-versa). Agora adicione à mistura o fato de que o Microsoft.ACE.OLEDB.12.0 tem duas versões diferentes. Um para 64 bits e outro para 32 bits e não podem ser instalados juntos na mesma máquina.

A solução mais simples é alterar a plataforma de destino do seu aplicativo através do menu do Visual Studio

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

Se a opção x86 ainda não estiver lá, selecione NEW, nomeie-a x86 , Copy Settings from AnyCPU e marque Create new project platforms

Se você acha que usar um aplicativo de 32 bits em um sistema operacional de 64 bits é uma perda de desempenho ou algo a ser evitado, então pense duas vezes e leia essa referência em que o PRO e o CONS de AnyCpu são examinados criticamente. Se você não tem um motivo específico para usar o AnyCpu , é melhor ficar com x86 .

Claro, outra opção é desinstalar a versão de 32 bits e instalar a versão de 64 bits do ACE a partir daqui e então executar o aplicativo como AnyCpu em sistemas de 64 bits. Mas isso pode ser um pesadelo para seus cenários de implantação. E se a versão do Microsoft Office 32 bits estiver instalada na sua máquina de destino x64? O Office instala sua versão pouco compatível do ACE e, como dito, não é possível ter 32 bits e 64 bits de ACE instalados na mesma máquina.
Agora você também deve pedir ao seu cliente para reinstalar o Office como 64 bits para manter seu aplicativo de 64 bits feliz.

ATUALIZAR

A situação mudou um pouco com as versões mais recentes do Visual Studio. Existe agora uma nova opção que é o padrão para novos projetos. Chama-se modo AnyCPU Prefer 32bit . Mais detalhes neste link: O que AnyCPU realmente significa A partir do .NET 4.5 e Visual Studio 11 e outro post interessante (embora com relação ao Sql Server Compact) é esse O problema com qualquer CPU – Prefer 32 bits – BadImageFormatException

Altere as ‘configurações avançadas’ do seu pool de aplicativos para permitir a execução de programas de 32 bits … que fizeram isso para mim.

Eu tenho problema semelhante quando estamos lendo o arquivo do Excel.

História do problema:

Recentemente, migramos nosso aplicativo de 32 bits para 64 bits por causa do requisito de memory. Para isso, migramos nossas janelas 7 de 32 bits para 64 bits. Mas ainda instalamos o Office de 32 bits em nossas máquinas.

porque, disso, tivemos esse problema ao importar dados do Excel para o aplicativo.

Solução,

Eu baixei a versão de 64 bits do http://www.microsoft.com/en-us/download/details.aspx?id=13255 e instalei o argumento como,

AccessDatabaseEngine_x64.exe / passive

Sem qualquer alteração de código, meu problema será resolvido.

Nota:

No sistema operacional de 64 bits e no Office de 64 bits, minha funcionalidade estava funcionando bem sem essa correção. Essa correção é necessária apenas enquanto nosso aplicativo é executado em 64 bits no SO de 64 bits que possui o Office de 32 bits instalado.

Maneira de base:

Aplicação: MVC C# , For Win Server 64 bit:

  1. Remova todo o escritório de 32 bits instalado.

  2. Link para download: https://www.microsoft.com/pt-br/download/details.aspx?id=13255

  3. selecione o download de 64 bits e, em seguida, instale-o no servidor (se você não conseguir configurar o programa. Verifique novamente 1 ponto).

  4. tente novamente acessar seu aplicativo novamente. insira a descrição da imagem aqui

para mim instalar o Microsoft Access Database Engine 2010 Redistribuível corrige o problema, a versão de 32 bits.