狀況
當開啟資料庫,建立與 Access 2000 中 Visual C++ 的 MFC DAO 類別,您會得到下列錯誤訊息:
無法辨識的資料庫格式。
當嘗試建立新的 MFC DAO 資料庫 SDI 或 MDI 使用 MFC 即 AppWizard 的專案中,也會收到這個訊息。
原因
此錯誤訊息發生因為 MFC DAO 類別那艘船 Visual C++ 6.0 負載 DAO 3.5 (Dao350.dll),根據預設值。DAO 3.5 使用 Jet 3.5,只能開啟 Jet 3.5 格式 (或更早版本) 資料庫。Access 2000 在 Jet 3.5 無法辨認的資料庫檔案時,都會建立 Jet 4.0 格式。若要成功地開啟一個使用 MFC DAO 類別的 Access 2000 資料庫,您需要使用 DAO 3.6 (Dao360.dll)。DAO 3.6 使用 Jet 4.0,可以開啟任何可用的 Access 資料庫格式。
解決方案
目前尚無解決方法,若要使用 AppWizard 與 Access 2000 資料來源。
應用程式,無法使用 DAO 3.6 版,您必須更新至 MFC 版本 6.01 的執行階段的 MFC 版本。若要執行這項操作取決於是否您要建立使用 MFC DLL 或靜態程式庫建置的 MFC 應用程式。
如果您要連結 MFC DLL 程式,您可以指定您想要在開啟 Access 2000 資料庫之前,插入下行程式碼中使用 DAO 3.6 的 MFC:
AfxGetModuleState()->m_dwVersion = 0x0601;
插入您的程式的 CYourApp::Initinstance() 函式中的這行。如果您要建立靜態 MFC 程式庫,則以下是取得靜態步驟建置的 MFC 使用 DAO 3.6:
-
修改 MFC SRC 目錄中的 Daocore.cpp 檔案。您會收到下列的註解:
// 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加入下列行:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
重建的變化,您需要的程式庫。例如,若要建置靜態的 MFC 程式庫,偵錯版本,非 Unicode,與任何瀏覽器檔案使用下列命令在命令提示字元,[MFC\SRC] 資料夾中:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
注意您必須確定您的路徑中的編譯器工具。如果沒有,您可能需要執行 Visual C++ 的 \BIN 資料夾中的 Vcvars32.bat 檔案。也請注意,當您建置這些新版本的程式庫時,會複製檔案透過 [MFC\LIB] 資料夾中現有的頂端,您可能要先儲存舊的。
狀態
此行為是系統設計的一部份。