Simptome
La deschiderea unei baze de date create cu Access 2000 prin MFC DAO clase în Visual C++, primiţi următorul mesaj de eroare:
Format nerecunoscut bazei de date.
De asemenea, primiţi acest mesaj când încercați să creați un nou MFC DAO date SDI sau MDI project utilizând MFC AppWizard.
Cauza
Acest mesaj de eroare apare deoarece MFC DAO clase care livrare cu Visual C++ 6.0 load DAO 3.5 (Dao350.dll) în mod implicit. DAO 3.5 utilizează Jet 3.5, care poate deschide numai Jet 3.5 format (sau o versiune anterioară) bazele de date. Access 2000 creează Jet 4.0 format fișiere de date, care sunt nerecunoscut Jet 3.5. Pentru a deschide cu succes o bază de date Access 2000 utilizează clasele MFC DAO, trebuie să utilizați DAO 3.6 (Dao360.dll). DAO 3.6 utilizează Jet 4.0, care poate deschide orice format de bază de date Access disponibile.
Rezolvare
În prezent, nu există nicio soluție pentru utilizarea AppWizard cu surse de date Access 2000.
Pentru aplicaţia dvs. să utilizați versiunea 3.6 DAO, trebuie să actualizați versiunea de MFC la momentul execuției pentru MFC versiunea 6.01. Pentru a face acest lucru depinde de dacă sunteţi construirea aplicațiilor să utilizeze MFC DLL sau pentru a construi cu bibliotecile statică pentru MFC.
Dacă vă sunt legarea cu MFC DLL, aveți posibilitatea să specificați că doriți să utilizați DAO 3.6 inserarea următoarea linie de cod înainte de a deschide o bază de date Access 2000 MFC:
AfxGetModuleState()->m_dwVersion = 0x0601;
Introduceți această linie în funcția CYourApp::Initinstance() programului. Dacă sunteţi construirea cu bibliotecile de statică MFC, Iată pașii pentru a obține statică compilările de MFC utilizarea DAO 3.6:
-
Modificați fișierul Daocore.cpp din directorul MFC SRC. Veți primi următorul comentariu:
// 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.5Adăugați următoarele linii:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
Regenerați biblioteca pentru varianta aveți nevoie. De exemplu, pentru a construi bibliotecă statică MFC, versiunea de depanare, non-Unicode, cu fișierele de browser nu utilizați următoarea comandă la promptul de comandă în folderul MFC\SRC:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Notă Trebuie să faceți anumite care sunt instrumentele compilator de cale. Dacă nu, trebuie să executaţi fişierul Vcvars32.bat aflat în folderul Visual C++ \BIN. De asemenea, rețineți că la compilarea aceste versiuni noi de biblioteci, acestea vor fi copiate pe partea de sus a celor existente în folderul MFC\LIB, astfel încât poate doriți să salvați mai întâi cele vechi.
Stare
Acest comportament este proiectat.