Problembeschreibung
Beim Öffnen einer Datenbank über MFC-DAO-Klassen in Visual C++ mit Access 2000 erstellt erhalten Sie folgende Fehlermeldung:
Nicht erkennbares Datenbankformat.
Diese Nachricht wird auch beim Erstellen Sie eine neue MFC-DAO-Datenbank SDI- oder MDI-Projekt MFC AppWizard erhalten.
Ursache
Diese Fehlermeldung tritt auf, da die MFC-DAO-das Schiff mit Visual C++ 6.0 DAO 3.5 (Dao350.dll Klassen) standardmäßig. DAO 3.5 verwendet Jet 3.5 können nur Jet 3.5-Format öffnen (oder früher) Datenbanken. Access 2000 erstellt Jet 4.0-Format Datenbankdateien Jet 3.5 nicht erkannt werden. Um erfolgreich öffnen eine Access 2000-Datenbank mit den MFC-DAO-Klassen müssen Sie DAO 3.6 (Dao360.dll) verwenden. DAO 3.6 verwendet Jet 4.0 verfügbaren Access-Datenbankformat öffnen können.
Problemlösung
Derzeit ist keine AppWizard mit Access 2000-Datenquellen.
Für die Anwendung auf Version 3.6 von DAO verwenden müssen Sie zur Laufzeit in MFC, Version 6.01 MFC-Version aktualisieren. Zu diesem Zweck hängt ab, ob die Anwendung die MFC-DLL verwenden oder statischen Bibliotheken für MFC erstellen erstellen.
Beim Verknüpfen mit der MFC-DLL können Sie angeben, dass MFC DAO 3.6 durch Einfügen der folgenden Codezeile vor dem Öffnen einer Access 2000-Datenbank verwendet werden soll:
AfxGetModuleState()->m_dwVersion = 0x0601;
Fügen Sie diese Zeile in der CYourApp::Initinstance()-Funktion des Programms. Wenn Sie mit der statischen MFC-Bibliotheken erstellen, sind die Schritte zur statischen MFC DAO 3.6 builds:
-
Ändern Sie die Datei Daocore.cpp im Verzeichnis MFC SRC. Sie erhalten den folgenden Kommentar:
// 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.5Fügen Sie die folgenden Zeilen hinzu:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
Erstellen Sie die Bibliothek für die Variante, die Sie neu. Erstellen die statische MFC-Bibliothek Debugversion, z. nicht-Unicode ohne Browser-Dateien b. den folgenden Befehl an der Befehlszeile im Ordner MFC\SRC:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Hinweis Sie müssen sicherstellen, die der Compilertools im Pfad befinden. Wenn dies nicht der Fall ist, müssen Sie die Datei Vcvars32.bat im Ordner \BIN der Visual C++ ausführen. Beachten Sie, dass beim Erstellen dieser neuen Versionen der Bibliotheken sie oberhalb der vorhandene im Ordner "MFC\LIB" kopiert werden sollten Sie die alten zuerst speichern.
Status
Dieses Verhalten ist entwurfsbedingt.