none
”データベースの形式を認識できません” になる RRS feed

  • 質問

  • Win7 --> Win10 へのアップで、データベースへ接続できないエラーが発生しました。

    Win7(32bit) 上でVisual Studio 2008 standard  と Access 2007 を使っていました('09~'15)が、
    パソコンに故障が出始めたため新しいパソコンを購入しました。

    新しいパソコンは、NEC製の2015年夏モデル(PC-DA770BAR)。店頭に並んだのは、2015年5月頃だと聞いています。
    購入したのは、2015年12月3日。購入時は、Win8.1 でした。
    パソコンを立ち上げて、最初に、Win8.1 用のリカバリーディスクを作成しています。

    購入の翌週に、無償アップデートで Win10 へ更新しています。
    Win10 への無償アップデート時に、エラーが発生しています。

    エラーコード 476、467 どちらかだったと思います。記憶がはっきりしません。

    新しいパソコンは、IMEで文字を入力する時、誤った操作をすると、再び文字を入力できるようになるまで、時間が長いような感じがします。
    それ以外は、動作がおかしいと思うところはないです。
    なので、Win10更新時のエラーを忘れて(エラー発生時は、気が動転したけど、その後、普通に使えているので、ほっとして忘れてしまった)
    パソコンを使用しています。


    Win10 + Visual Studio2008 standard 、Access 2007 で、”データベースの形式を認識できません” になりました。
    32bit と 64bit の違いなのかと思い、Visual Studio Community 2015、Access 2016 に更新したのですが、エラー状態から抜けません。
    ※接続文字によるデータベースへの接続をやる以前の 「テスト接続」 ができません。

    Visual Studio Community での操作
    [ツール]-[データベースへの接続]
    Microsoft Access データベースファイル を選択
    C:\Program Files (x86)\Microsoft Office\root\Office16\ACCWIZ にある Database1.accdb  を選択
    Database1.accdb  は、マウス右クリック-> 新規作成 -> Microsoft Access Database で作成、
    他のデータベース(*.accdb)から、テーブル部分のみをインポート、\ACCWIZ へコピー。
    Access2016 で開くとテーブルが正常に表示がされます。
    データベースがどの位置のフォルダにあっても、エラーになります。

    [テスト接続]をクリックすると ”データベースの形式(フルパス)を認識できません” になる。
    ユーザー名は、Admin   パスワードは未設定。

    Visual Studio Community の Any CPU  は、x86 を選択しています。
    Access は、フォントサイズを大きくしただけで、他の設定(セキュリティ等)は何も行っていません。

    リカバリーディスクを戻して、Win8.1 にして再び、Win10 にするのは、なるべく避けたいです。
    Win10 の無償アップデート時に発生した、エラーが再発する可能性がある。又、認証のやり直し、など作業が多い。
    対処法を教えてもらえれば、助かります。
    2016年1月9日 11:42

すべての返信

  • 以下のような話と同じで、プロバイダに ACE を使わなければならないところを JET を使っているということはないですか?

    【Access VBA】エラー:データベースの形式”~.accdb”を認識できません
    http://chiroinu.freehostia.com/wordpress/?p=447

    #上の話は通じてますか? 通じないとすると、掲示板での解決は難しそうな気がします・・・


    【追伸】

    ACE とか JET とか何を言っているかについては、以下の記事を見てください。

    Access 2007 の DB を利用するアプリ開発
    http://surferonwww.info/BlogEngine/post/2011/11/08/Development-of-application-which-uses-accdb-file-of-Access-2007.aspx

    また、32-bit 版と 64-bit 版の ACE は共存できないそうですので注意してください。(ウラワザ的なやり方はあるそうですが)

    • 編集済み SurferOnWww 2016年1月9日 14:05 追伸追加
    • 回答の候補に設定 星 睦美 2016年1月12日 4:50
    2016年1月9日 12:06
  • x86用のAccessDatabaseEngineが入っていないか認識できないとそのエラーが出ます。
    #VisualStudioは32bitアプリなのでx64用では駄目です

    Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントを入れたらどうなりまか?

    あとは接続の追加ダイアログで詳細設定のProviderがMicrosoft.ACE.OLEDBになっていることも確認かな


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2016年1月12日 4:50
    2016年1月9日 13:52
  • こんにちは、フォーラム オペレーターの星 睦美です。

    shotnote さんの質問にフォーラム ユーザーからの回答がありますので、内容を確認して返信いただければと思います。
    参考になった回答には、回答者へのはげましになりますので投稿者からの[回答としてマーク] をお願いします。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2016年1月12日 4:49
  • アドヴァイスありがとうございます

    回答の主旨は、

    →”Microsoft.ACE.OLEDB.12.0”と書き換えるとOK!

    でいいでしょうか?

    Visual Studio Community 2015 の【テスト接続】は、

    Microsoft.Jet.OLEDB.4.0 (Accessを選択した場合)

    で固定です。

    上記のプロバイバーは、

    VSが発生している文字であって、かつ、ユーザーが変更できない

    文字なんです。

    なぜ、VS指定の文字を使用して(ユーザーによる誤りが介入する余地のない状態で)、データベースへ接続できないのか 

    というのが質問の主旨です。

    2名のVS専門家からの回答を読んいると、エラーの原因は、VS、Access 以外にあるのではないかと感じます。

    OSアップの時、エラーが発生しているので、そちらを調べようと思っています。ありがとうございました。

    2016年1月12日 5:41
  • アドヴァイスありがとうございます

    Access 2010 のパッチ(再分布可能コンポーネント)を Access 2016 へ適用したらどうかという提案ですが、

    マイクロソフトのサポート(電話)から、以下のようなコメントを得ています。

    "Access 2016 は、過去に起こった、全ての不具合(gekkaさんの薦める、再分布可能コンポーネントも含めてです)を改修してソースに反映している。その上で2016版をリリースしている。不具合の改修漏れはない。又、Access 2016 にパッチはない

    これは、内部を調査したうえでの回答である。”

    ということです。

    2016年1月12日 6:11
  • 私が上のレスで紹介した記事(【追伸】の方の「Access 2007 の DB を利用するアプリ開発」)を読んでいただけたでしょうか? 読めば質問者さんの疑問は解消すると思うのですが・・・ 読んでも分からないということであれば不明点を質問してください。

    > 回答の主旨は、
    > →”Microsoft.ACE.OLEDB.12.0”と書き換えるとOK!
    > でいいでしょうか?

    そうではありません。ACE プロバイダがインストールされていれば接続文字列を「書き換える」だけで接続できると思いますが、質問者さんの場合はその前にやること(ACE プロバイダをインストールする)があります。

    ACE データベースエンジン用のドライバ(32-bit 版に限る)を Microsoft のダウンロードサイトからダウンロードして、それを質問者さんの開発マシン(VS2008 Std がインストールしてある)にインストールすれば、以下の画像のように Provider は JET と ACE が選択できるようになるはずです。


    Visual Studio を .accdb ファイルに接続するなら ACE を選択(.mdb ファイルなら JET で可)すれば接続できるはずです。そうすれば「書き換える」ということは不要のはずです。


    > Visual Studio Community 2015 の【テスト接続】は、
    > Microsoft.Jet.OLEDB.4.0 (Accessを選択した場合)
    > で固定です。

    それは紹介した記事にも書きましたが、JET は Windows OS 同梱で提供されているからです。ACE は同梱されてないので自分でダウンロードしてきてインストールしなければなりません。


    • 編集済み SurferOnWww 2016年1月12日 6:57 一部修正
    2016年1月12日 6:44
  • Gekka さんへのレス、

    > Access 2010 のパッチ(再分布可能コンポーネント)を Access 2016 へ適用したらどうかという提案ですが、

    を見ると誤解があるようです。

    私が先に紹介した記事「Access 2007 の DB を利用するアプリ開発」に書いてある「2007 Office system ドライバ: データ接続コンポーネント」は Office の修正パッチではないですよ。

    Office には含まれない ACE データベースエンジン用の OLEDB ドライバと ODBC ドライバをインストールするためのものです。

    それは Gekka さんが紹介された「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」も同じです。(バージョンは異なりますが)

    回答者の回答が理解されてなくて、マイクロソフトのサポートと話が通じてないように見えますが、いかがですか。

    2016年1月12日 9:02