Beim Öffnen einer mit Access 2000 erstellten Datenbank wird die Fehlermeldung "Unbekanntes Datenbankformat" angezeigt


Problembeschreibung


Beim Öffnen einer mit Access 2000 erstellten Datenbank über MFC-DAO-Klassen in Visual C++ erhalten Sie die folgende Fehlermeldung:
Unbekanntes Datenbankformat.
Diese Meldung wird auch angezeigt, wenn Sie versuchen, ein neues MFC-DAO-Datenbank-SDI-oder MDI-Projekt unter Verwendung von MFC-AppWizard zu erstellen.

Ursache


Diese Fehlermeldung tritt auf, weil die MFC-DAO-Klassen, die mit Visual C++ 6,0 ausgeliefert werden, DAO 3,5 (dao350. dll) standardmäßig laden. DAO 3,5 verwendet Jet 3,5, das nur die Datenbanken des Jet 3,5-Formats (oder früher) öffnen kann. Access 2000 erstellt Datenbankdateien des Jet 4,0-Formats, die für Jet 3,5 nicht zu erkennen sind. Wenn Sie eine Access 2000-Datenbank mithilfe der MFC-DAO-Klassen erfolgreich öffnen möchten, müssen Sie DAO 3,6 (dao360. dll) verwenden. DAO 3,6 verwendet Jet 4,0, der jedes verfügbare Access-Datenbankformat öffnen kann.

Fehlerbehebung


Derzeit gibt es keine Problemumgehung für die Verwendung von AppWizard mit Access 2000-Datenquellen. Damit Ihre Anwendung Version 3,6 von DAO verwenden kann, müssen Sie die MFC-Version zur Laufzeit auf MFC, Version 6,01, aktualisieren. Dazu hängt davon ab, ob Sie die Anwendung erstellen, um die MFC-DLL zu verwenden oder mit den statischen Bibliotheken für MFC zu erstellen. Wenn Sie eine Verknüpfung mit der MFC-DLL herstellen, können Sie angeben, dass MFC DAO 3,6 verwenden soll, indem Sie die folgende Codezeile einfügen, bevor Sie eine Access 2000-Datenbank öffnen:
AfxGetModuleState()->m_dwVersion = 0x0601;
Fügen Sie diese Zeile in der CYourApp:: InitInstance ()-Funktion Ihres Programms ein. Wenn Sie mit den statischen MFC-Bibliotheken arbeiten, führen Sie die folgenden Schritte aus, um statische MFC-Builds für die Verwendung von DAO 3,6 zu erhalten:
  1. Ändern Sie die Datei "Daocore. cpp" im MFC-src-Verzeichnis. 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.5
    Fügen Sie die folgenden Zeilen hinzu:
    #undef _MFC_VER#define _MFC_VER 0x0601
  2. Erstellen Sie die Bibliothek für die benötigte Variante neu. Wenn Sie beispielsweise die statische MFC-Bibliothek erstellen möchten, verwenden Sie den folgenden Befehl an der Eingabeaufforderung im Ordner MFC\SRC:
      nmake DEBUG=1for release:   nmake DEBUG=0for unicode builds:   nmake DEBUG=1  UNICODE=1   nmake DEBUG=0  UNICODE=1
Hinweis Sie müssen sicherstellen, dass sich die Compiler-Tools in Ihrem Pfad befinden. Wenn dies nicht der Fall ist, müssen Sie möglicherweise die Datei "vcvars32. bat" im Visual C++-Ordner "\bin" ausführen. Beachten Sie auch, dass Sie beim Erstellen dieser neuen Versionen der Bibliotheken über die vorhandenen Dateien im MFC\LIB-Ordner kopiert werden, damit Sie die alten Dateien zuerst speichern können.

Status


Es handelt sich hierbei um ein beabsichtigtes Verhalten.