При открытии базы данных, созданной с помощью Access 2000, появляется сообщение об ошибке "неизвестный формат базы данных"

Проблемы

При открытии базы данных, созданной с помощью Access 2000 с помощью классов MFC DAO в Visual C++, появляется следующее сообщение об ошибке:

Неизвестный формат базы данных.

Кроме того, это сообщение появляется при попытке создания нового проекта SDI-базы данных MFC или MDI с помощью MFC AppWizard.

Причина

Это сообщение об ошибке появляется из-за того, что классы 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.

Решение

В настоящее время не существует решения для использования AppWizard с источниками данных Access 2000. Чтобы приложение использовало версию 3,6 DAO, необходимо обновить версию MFC во время выполнения до MFC версии 6,01. Это зависит от того, строится ли приложение для использования библиотеки DLL MFC или для построения со статическими библиотеками для MFC. При связывании с библиотекой DLL MFC вы можете указать, что вы хотите использовать MFC для использования DAO 3,6, вставив следующую строку кода перед открытием базы данных Access 2000:

AfxGetModuleState()->m_dwVersion = 0x0601;

Вставьте эту строку в функцию CYourApp:: InitInstance () программы. Если вы собираетесь использовать статические библиотеки MFC, выполните указанные ниже действия, чтобы получить статические сборки MFC для использования DAO 3,6:

  1. Измените файл Daocore. cpp в каталоге SRC библиотеки MFC. Вы получите следующее примечание:

    // 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 (отладочную версию, а не Юникод) без файлов браузера, в командной строке в папке MFC\SRC введите следующую команду:

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

Примечание. Необходимо убедиться в том, что средства компилятора находятся в пути. В противном случае, возможно, потребуется запустить файл vcvars32. bat, расположенный в папке Visual C++ \BIN. Также обратите внимание на то, что при создании новых версий библиотек они будут скопированы в верхней части существующих в папке MFC\LIB, поэтому вам может понадобиться сохранить старые из них.

Статус

Такое поведение является особенностью данного продукта.

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×