C#Microsoft.Office.Interop.access.daoは64bitでは使えません

更新が遅くなってすみません。

前回Accessデータベースをmdb形式からaccdb形式に修正させるにあたって書かせていただきました。

今回はデータベースの最適化についてです。公開してくださっていたのがMicrosoft.Office.Interop.access.daoを参照する方法です。

DBEngine dbe = new DBEngineClass();
dbe.CompactDatabase("test.accdb", "test_tmp.accdb", null, null, null);
 


でも、でもである。このコード、32bitでは動作したものの、64bitでは動作しないことがわかったのです。AnyCPUをX86にしてもダメ。上記のコードではパスワードをnullにしていますが、そこをどう修正してもダメなんです。ちなみに、公開されているフリーソフトで試してもパスワードがある場合はダメでした。

手を尽くしてネットを検索したのですが代替案は見当たりません。特にパスワード付きファイルを扱う場合は皆無でした。仕方なくaccdb形式をあきらめ、mdb形式でやっと方法を見つけました。ここへ到達するのに2日かかりました。Microsoft Jet and Replication Objects 2.6 Libraryを参照する方法です。これなら64bitでも動作します。ただし、accdbファイルは扱えません。

JRO.JetEngine jroJet = new JRO.JetEngine();
jroJet.CompactDatabase(
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + args[0] + ";" + "Jet OLEDB:Database Password=" + args[2] + ";",
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + args[1] + ";" + "Jet OLEDB:Database Password=" + args[2] + ";");


前回のことといい、Microsoftさん!ほんとなんとかしてください!

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

なるほど(納得、参考になった、ヘー)

この記事へのコメント

  • Natalie

    Thanks for sharing your thoughts about u_O. Regards
    2018年03月03日 23:02