Požymiai
Norint atidaryti duomenų bazę, sukurtų naudojant Access 2000 – MFC DAO klasės Visual c ++, gaunate šį klaidos pranešimą:
Neatpažįstamas duomenų bazės formatas.
Taip pat gausite šį pranešimą, kai bandote sukurti naują MFC DAO duomenų bazės SDI ar MDI projekto naudojant MFC AppWizard.
Priežastis
Ši klaida kyla dėl to, MFC DAO klasės, laivas su Visual C ++ 6.0 įkelti DAO 3.5 (Dao350.dll) pagal numatytuosius parametrus. DAO 3.5 naudoja Jet 3.5, kai tik galite atidaryti Jet 3.5 formatą (arba anksčiau) duomenų bazės. Access 2000 sukuria formato Jet 4.0 duomenų bazės failai, kurie yra neatpažįstamo Jet 3.5. Norėdami sėkmingai atidaryti Access 2000 duomenų bazę naudojant MFC DAO klasės, jums reikia naudoti DAO 3,6 (Dao360.dll). DAO 3,6 naudoja Jet 4.0, kurią galite atidaryti bet kurį galima Access duomenų bazės formatą.
Sprendimas
Šiuo metu, naudojant AppWizard su Access 2000 duomenų šaltinių problemos sprendimo nėra.
Kad programa naudoti DAO 3,6 versiją, turite atnaujinti versiją MFC vykdymo metu ir MFC 6,01 versija. Norėdami tai padaryti, priklauso nuo ar kuriate MFC DLL arba kurti su statine bibliotekos MFC programa.
Jei susiejate su MFC DLL, jūs galite nurodyti, kad MFC naudoti DAO 3,6 įrašant šią eilutę kodo, prieš atidarydami programos Access 2000 duomenų bazės:
AfxGetModuleState()->m_dwVersion = 0x0601;
Įtraukti šią eilutę į jūsų programos CYourApp::Initinstance() funkcija. Jei kuriate su statine MFC bibliotekos, toliau nurodytos, kaip gauti statinis komponavimo versijose MFC naudoti DAO 3,6:
-
Pakeisti Daocore.cpp failą MFC SRC kataloge. Jūs gausite šį komentarą:
// 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.5Atlikite šiuos veiksmus:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
Atkurti biblioteką, jums reikia varianto. Pvz., sukurti statinis MFC bibliotekos, debug versija, ne Unicode, naudojant failų naršyklę Naudokite šią komandą į komandų eilutę į aplanką MFC\SRC:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Pastaba. Turite įsitikinti, kompiliatorius įrankius, kurie savo kelyje. Jei ne, gali tekti paleisti Visual C ++ \BIN aplanke Vcvars32.bat failą. Taip pat Atkreipkite dėmesį, kad kai kuriate šios naujos versijos bibliotekų, jie nukopijuojama virš esamus MFC\LIB aplanke, galite išsaugoti senus pirmą kartą.
Būsena
Tai yra sisteminis apribojimas.