Symptomer
Når du åpner en database som er opprettet i Access 2000 til og med DAO MFC-klasser i Visual C++, kan du få følgende feilmelding:
Ukjent databaseformat.
Du kan også få denne meldingen når du prøver å opprette en ny database for DAO MFC SDI eller MDI-prosjekt ved hjelp av MFC-AppWizard.
Årsak
Denne feilmeldingen vises fordi egenskapen DAO MFC-klasser som leveres med Visual C++ 6.0 Last DAO 3,5-tommers (Dao350.dll) som standard. DAO 3.5 bruker Jet 3.5, som bare kan åpne Jet 3.5-format (eller tidligere) databaser. Access 2000 oppretter Jet 4.0-formatet databasefiler som er ukjente for Jet 3.5. Hvis du vil åpne en Access 2000-database ved hjelp av DAO MFC-klasser, må du bruke DAO 3.6 (Dao360.dll). DAO 3.6 bruker Jet 4.0, som kan åpne alle tilgjengelige Access-databaseformat.
Løsning
Det finnes for øyeblikket ingen løsning ved hjelp av AppWizard med datakilder i Access 2000.
Hvis programmet skal bruke versjon 3.6 av DAO, må du oppdatere versjon av MFC ved kjøretid til MFC versjon 6.01. Hvis du vil gjøre dette, avhenger av om du lager programmet skal bruke MFC DLLEN eller bygge med statiske bibliotekene for MFC.
Hvis du kobler med MFC DLLEN, kan du angi at du vil bruke MFC til å bruke DAO 3.6 ved å sette inn følgende linje med kode før du åpner en Access 2000-database:
AfxGetModuleState()->m_dwVersion = 0x0601;
Sett inn denne linjen i CYourApp::Initinstance()-funksjonen i programmet. Hvis du lager med statisk MFC-bibliotekene, er følgende fremgangsmåten for å lage statiske bygger av MFC til å bruke DAO 3.6:
-
Endre filen Daocore.cpp i mappen MFC SRC. Du mottar følgende merknad:
// 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.5Legg til følgende linjer:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
Gjenoppbygge biblioteket for varianten som du trenger. For eksempel for å bygge det statiske MFC-biblioteket, feilsøkingsversjon Bruk ikke-Unicode, med ingen leser filer følgende kommando ved ledeteksten i mappen MFC\SRC:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Obs! Du må være sikker på at som verktøyene kompilatoren er i banen. Hvis ikke, må du kanskje kjøre Vcvars32.bat-filen ligger i mappen \BIN Visual C++. Legg også merke til at når du bygger disse nye versjoner av bibliotekene, vil de bli kopiert over toppen av eksisterende i mappen MFC\LIB slik at du vil lagre gamle først.
Status
Denne virkemåten er standard.