現象

Visual C++ で Access 2000 を使って作成したデータベースを開くと、次のエラーメッセージが表示されます。

データベースの形式を認識できません。

MFC AppWizard を使って、新しい MFC DAO データベース SDI または MDI プロジェクトを作成しようとするときにも、このメッセージが表示されます。

原因

このエラーメッセージが表示されるのは、Visual C++ 6.0 に付属する MFC DAO クラスが、既定で DAO 3.5 (Dao350) を読み込むためです。 DAO 3.5 は Jet 3.5 を使用します。 jet 3.5 形式 (またはそれ以前) のデータベースのみを開くことができます。 Access 2000 は Jet 4.0 形式のデータベースファイルを作成します。 jet 3.5 は認識されません。 MFC DAO クラスを使って Access 2000 データベースを正常に開くには、DAO 3.6 (Dao360) を使う必要があります。 DAO 3.6 は Jet 4.0 を使用します。この機能を使用すると、利用可能な Access データベース形式を開くことができます。

解決方法

現時点では、Access 2000 データソースで AppWizard を使用する場合、回避策はありません。 アプリケーションでバージョン3.6 の DAO を使用するには、実行時に mfc のバージョン6.01 に mfc のバージョンを更新する必要があります。 この操作を行うには、アプリケーションをビルドして MFC DLL を使うか、MFC 用静的ライブラリを使って構築するかによって異なります。 MFC DLL とリンクする場合は、Access 2000 データベースを開く前に次のコード行を挿入して、MFC で DAO 3.6 を使用するように指定できます。

AfxGetModuleState()->m_dwVersion = 0x0601;

この行をプログラムの CYourApp:: Initinstance () 関数に挿入します。 静的な MFC ライブラリを使って構築する場合は、次の手順で MFC の静的ビルドを取得して DAO 3.6 を使うことができます。

  1. MFC SRC ディレクトリの Daocore .cpp ファイルを変更します。 次のコメントが表示されます。

    // Determine whether to use DAO 3.6, 3.5, or 3.0// Use DAO 3.0 if DLL build and not built with MFC 4.21 or later// Use DAO 3.6 if MFC 6.01 or later// otherwise, DAO 3.5

    次の行を追加します。

    #undef _MFC_VER#define _MFC_VER 0x0601
  2. 必要なバリエーションのライブラリを再構築します。 たとえば、静的な MFC ライブラリ、デバッグバージョン、非 Unicode をビルドするには、次のコマンドを、mfc¥ SRC フォルダーのコマンドプロンプトで使用します。

      nmake DEBUG=1for release:   nmake DEBUG=0for unicode builds:   nmake DEBUG=1  UNICODE=1   nmake DEBUG=0  UNICODE=1

注: コンパイラツールがパスに含まれていることを確認する必要があります。 見つからない場合は、Visual C++ \BIN フォルダーにある Vcvars32 ファイルを実行する必要があります。 また、これらの新しいバージョンのライブラリをビルドすると、mfc¥ LIB フォルダー内の既存のライブラリの一番上にコピーされるため、最初に古いバージョンを保存することをお勧めします。

状態

この動作は仕様です。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

翻訳品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

フィードバックをお送りいただきありがとうございます!

×