打开使用 Access 2000 创建的数据库时收到 "无法识别的数据库格式" 错误消息

在 Visual c + + 中打开使用 Access 2000 通过 MFC DAO 类创建的数据库时,收到以下错误消息:

无法识别的数据库格式。

当尝试使用 MFC 操作向导创建新的 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 数据源使用操作向导的解决方法。 若要使应用程序使用 DAO 版本3.6,必须在运行时将 MFC 版本更新为 MFC 版本6.01。 若要执行此操作,取决于生成应用程序以使用 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 文件。 您将收到以下注释:

    // 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 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×