Симптомы
При открытии базы данных, созданные в Access 2000 с помощью классов DAO Библиотеки MFC в Visual C++, можно получить следующее сообщение об ошибке:
Нераспознаваемый формат базы данных.
Также сообщение об ошибке при попытке создания новой базы данных MFC DAO SDI или MDI проекта с помощью мастере приложений MFC.
Причина
Это сообщение об ошибке возникает, классы MFC DAO, поставляемых с Visual C++ 6.0 нагрузки 3.5 DAO (Dao350.dll) по умолчанию. DAO 3.5 использует Jet 3.5, которое может быть открыто только формат Jet 3.5 (или более ранней) базы данных. Microsoft Access 2000 создает файлы базы данных, которые представляют неизвестные Jet 3.5 формат Jet 4.0. Чтобы успешно открыть базу данных Access 2000 с помощью классов DAO Библиотеки MFC, необходимо использовать DAO 3.6 (Dao360.dll). DAO 3.6 использует Jet 4.0, который можно открыть на любом доступном формате базы данных Access.
Решение
В настоящее время не имеет решения с помощью AppWizard с источниками данных Microsoft Access 2000.
Приложения для использования версии DAO 3.6 необходимо обновить версию 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.
-
Измените файл Daocore.cpp в каталоге MFC SRC. Вы получите следующий комментарий:
// 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 -
Перестройте библиотеки для варианта, которые необходимы. Например для создания статической библиотеки MFC, отладочная версия Юникод, нет файлов обозревателя следующая команда командной строки в папке MFC\SRC:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Примечание. Необходимо убедиться, средствам компилятора в пути. В противном случае необходимо запускать файл vsvars32.bat, расположенный в папке \BIN для Visual C++. Также Обратите внимание, что при создании этих новых версий библиотек, они копируются поверх существующих в папке MFC\LIB, необходимо сначала сохранить старых.
Статус
Данное поведение является особенностью.