使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

打开 Visual C++ 中的 MFC DAO 类通过使用 Access 2000 创建的数据库时,将获得以下错误消息:

不可识别的数据库格式。

尝试创建新的 MFC DAO 数据库 SDI 或 MDI 项目使用 MFC 应用程序向导时,也会收到此消息。

原因

此错误消息默认情况下因为 MFC DAO 类装运 Visual C++ 6.0 负载 DAO 3.5 (Dao350.dll)。DAO 3.5 使用 Jet 3.5,只能打开 Jet 3.5 格式 (或以上) 的数据库。Access 2000 创建 Jet 4.0 格式无法识别的 Jet 3.5 的数据库文件。若要成功打开 Access 2000 数据库中使用 MFC DAO 类,您需要使用 DAO 3.6 (Dao360.dll)。DAO 3.6 使用 Jet 4.0,可以打开任何可用的 Access 数据库格式。

解决方案

目前尚无与 Access 2000 数据源使用应用程序向导。

应用程序使用 DAO 3.6 版本,则必须在运行时用于 MFC 版本 6.01 更新 MFC 的版本。若要执行此操作取决于是否要生成使用 MFC DLL 或为 MFC 构建与静态库的应用程序。

如果您链接 MFC DLL 时,可以指定所需的 MFC 使用 DAO 3.6,方法是打开一个 Access 2000 数据库之前,插入下面的代码行:

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=1

    for release:
    nmake DEBUG=0

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

注意:您需要确保您的路径中的编译器工具。否则,您可能需要运行 Visual C++ \BIN 文件夹中的 Vcvars32.bat 文件。此外请注意,生成这些新版本的库时,他们会被复制的 MFC\LIB 文件夹中现有的基础上使您可能想要保存旧的第一次。

状态

此行为是设计使然。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×