12

Windows 7 (x64) で Microsoft.ACE.OLEDB.12.0 プロバイダーを使用して MS Access データベースを読み取る x64 アプリケーションがあり、正常に動作します (Office 2010 がインストールされています)。

Office 2013 がインストールされた Windows 8 で同じアプリケーションを実行すると、プロバイダーが以前のバージョンを開くことができないというメッセージが表示されて失敗します。

Office 2013 がインストールされた Windows 8 では、Microsoft.ACE.OLEDB.15.0 もありますが、コードを再確認したところ、接続文字列で 12.0 が指定されていることが確認されました。

このプロバイダーにはさまざまな「バージョン」がありますか? それとも、私が見逃しているものがありますか?

x86 プラットフォームを使用するために Windows 8 でテスト プログラムを再コンパイルし、プロバイダーを Microsoft.Jet.OLEDB.4.0 に変更すると、すべてが再び機能します。残念ながら、モジュールは x64 (特に Excel へのプラグイン) で実行できる必要があるより大きなエコシステムの一部であり、アクセス データベースはアプリケーションによってサプライヤの Web サイトからスイートによってダウンロードされるため、データベースを変換したり、すべてを x86 に変更したりすることは現実的ではありません。

前もって感謝します。

4

6 に答える 6

15

各プロバイダーで使用されているファイルのバージョンを確認し、レジストリを調べたところ、Office 2013 がインストールされた Windows 8 のクリーン インストールで、両方のプロバイダーが同じアセンブリを指していることがわかりました。

(C:\Program Files\Common Files\microsoft shared\OFFICE15\ACEOLEDB.DLL)

次に、Microsoft Access Database Engine Redistributable ( http://www.microsoft.com/en-us/download/details.aspx?id=13255 ) をダウンロードして実行し、適切なバージョンの 12.0 プロバイダーを C:\ にインストールしました。 Program Files\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL であり、アプリケーションは期待どおりに動作しています。

MS が、12.0 のように動作しない 12.0 としてブランド化されたプロバイダーを含めたことは奇妙に思えます。

とにかく-4〜5時間の髪の引っ張りから誰かを助けることを願っています...

クレイグ

于 2013-01-28T13:41:21.163 に答える
5

古い ACE 再頒布可能パッケージをインストールする際の問題は、次に Office 2013 で Access を実行したときに、Office がそれ自体を "修復" し、バージョン 12 のポインターを Office15 ディレクトリに戻すことです。

于 2014-06-10T18:13:39.050 に答える
4

Windows 8.1 64 ビットと Microsoft Office 2013を使用しています。「Microsoft Access データベース エンジン 2010 再頒布可能パッケージ」 をインストールしましたが、何も変更されず、同じエラーが発生しました。「2007 Office System Driver: Data Connectivity Components」をインストールすると問題が解決しました。

このリンクからこの解決策を見つけました。

Visual Studio で Access データベースに接続しようとしても、このエラーが発生し続けますか?

最初にこれをインストールしてみてください: http://www.microsoft.com/download/en/details.aspx?id=13255

ただし、私のようにうまくいかない場合は、次の方法を試してください。

注:これは2007年のオフィス用ですが、オフィス2010でも機能します。なぜそうするのか聞かないでください:)

  1. これをダウンロードしてインストールします: http://www.microsoft.com/download/en/confirmation.aspx?id=23734

  2. VS でデータ ソースの追加をクリックし、ウィザードに従ってお楽しみください。:)

于 2014-06-04T14:15:09.747 に答える
4

OPで説明されている動作を明確にするために:

Office 2013 (ACE 15.0) では、Microsoft は Jet 3.x 以前 (つまり、Access 97 以前) で作成された mdb ファイルのサポートをキャンセルしました。したがって、問題を引き起こしたOPのデータベースはAccess97-DBであると強く思います。Jet 4.0 データベース (Access 2000、aslo .mdb) は引き続きサポートされており、エラーは発生しません。

Office 2013 が新しいドライバーも以前のバージョンとして登録するという事実は、ハードコードされたプロバイダー名が組み込まれている多くのプログラムとスクリプトを動作させ続けるための MS の意図的な試みです。アップグレードで認識したように、これは多くの動作を維持するだけです、すべてではありません...

于 2014-05-23T08:12:11.843 に答える
1
  1. Microsoft Access データベース エンジン 2010 再頒布可能パッケージ x 64 をインストールします ( http://www.microsoft.com/en-us/download/details.aspx?id=13255 )
  2. データベースを新しい形式に変換します (.mdb -> .accdb)
  3. プロジェクト全体で "Microsoft.Jet.OleDb.4.0" を検索し、Microsoft.ACE.OLEDB.12.0 に置き換えます。
于 2015-04-16T22:34:54.040 に答える
1

さらに、再配布可能ファイルの 32 ビット バージョンは 64 ビット Windows OS 上の Office 2013_64 ビットで動作するようですが、再配布可能ファイルの 64 ビット バージョンは私の場合は動作しませんでした。

于 2013-08-12T12:37:53.853 に答える