Triệu chứng
Khi mở cơ sở dữ liệu được tạo bằng Access 2000 MFC DAO các lớp trong Visual C++, bạn nhận được thông báo lỗi sau:
Cơ sở dữ liệu không được nhận dạng.
Bạn cũng nhận được thông báo này khi cố gắng tạo mới MFC DAO cơ sở dữ liệu SDI hoặc dự án MDI sử dụng MFC AppWizard.
Nguyên nhân
Thông báo lỗi này xảy ra do MFC DAO lớp đó tàu với Visual C++ 6.0 DAO 3.5 (Dao350.dll) theo mặc định. Sử dụng DAO 3.5 Jet 3.5, chỉ có thể mở định dạng máy 3.5 (trở) cơ sở dữ liệu. Access 2000 tạo máy 4.0 định dạng tệp cơ sở dữ liệu không thể nhận ra máy bay phản lực 3.5. Đã mở một cơ sở dữ liệu Access 2000 bằng cách sử dụng lớp MFC DAO, bạn cần sử dụng DAO 3.6 (Dao360.dll). ĐẢO 3.6 sử dụng máy 4.0, có thể mở các định dạng truy cập cơ sở dữ liệu có sẵn.
Giải pháp
Hiện tại, không có cách xử lý sử dụng AppWizard với nguồn dữ liệu Access 2000.
Để sử dụng để sử dụng phiên bản 3,6 DAO, bạn phải cập nhật phiên bản MFC lúc chạy MFC Phiên bản 6.01. Để làm điều này phụ thuộc vào việc bạn đang xây dựng các ứng dụng sử dụng MFC DLL hoặc xây dựng với thư viện tĩnh cho MFC.
Nếu bạn đang kết nối với MFC DLL, bạn có thể chỉ định mà bạn muốn MFC sử dụng DAO 3.6 bằng cách thêm các dòng mã sau trước khi bạn mở một cơ sở dữ liệu Access 2000:
AfxGetModuleState()->m_dwVersion = 0x0601;
Chèn dòng này trong CYourApp::Initinstance() chức năng của chương trình của bạn. Nếu bạn đang xây dựng với thư viện MFC tĩnh, dưới đây là các bước để tĩnh bản dựng MFC sử dụng DAO 3.6:
-
Sửa đổi tệp Daocore.cpp trong thư mục MFC SRC. Bạn sẽ nhận được nhận xét sau:
// 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.5Thêm dòng sau:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
Xây dựng lại thư viện dành cho phiên bản bạn cần. Ví dụ: để tạo thư viện MFC tĩnh, phiên bản gỡ lỗi không dùng Unicode, với tập tin trình duyệt không sử dụng lệnh sau tại dấu nhắc lệnh trong thư mục MFC\SRC:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Lưu ý Bạn phải chắc chắn có những công cụ biên soạn trong đường dẫn của bạn. Nếu không, bạn có thể phải chạy tệp Vcvars32.bat trong cặp \BIN Visual C++. Lưu ý rằng khi bạn tạo các phiên bản mới của thư viện, họ sẽ được sao chép trên đầu mới trong thư mục MFC\LIB để bạn có thể lưu các tệp cũ đầu tiên.
Trạng thái
Hoạt động này là theo thiết kế.