Belirtiler
Visual c++ MFC DAO sınıfları aracılığıyla Access 2000 ile oluşturulan bir veritabanını açtığınızda, aşağıdaki hata iletisini alırsınız:
Tanınmayan veritabanı biçimi.
Yeni bir MFC DAO veritabanı SDI veya MDI projesi kullanarak MFC AppWizard oluşturmaya çalışırken de bu iletiyi alırsınız.
Neden
Visual C++ 6.0 yük DAO 3.5 (Dao350.dll) ile o sevk MFC DAO sınıfları için varsayılan olarak bu hata iletisi oluşur. DAO 3.5 kullanan Jet 3.5, Jet 3.5 biçimi yalnızca açabilirsiniz (veya öncesi) veritabanları. Access 2000 için Jet 3.5 tanınmayan veritabanı dosyaları, Jet 4.0 biçiminde oluşturur. MFC DAO sınıfları kullanarak Access 2000 veritabanını başarıyla açılabilmesi için DAO 3.6 (Dao360.dll) kullanmanız gerekir. DAO 3.6 herhangi kullanılabilir Access veritabanı biçimi açabilirsiniz Jet 4.0 kullanır.
Çözüm
Şu anda, AppWizard Access 2000 veri kaynakları ile kullanma için geçici çözüm yoktur.
Uygulamanızın DAO 3.6 sürümünü kullanmak, MFC sürüm 6.01 için çalışma zamanında MFC sürümü güncelleştirmeniz gerekir. Bunu yapmak için mi ile statik kitaplıkları oluşturmak için MFC veya MFC DLL'yi kullanan uygulama oluşturma bağlıdır.
MFC DLL ile bağlanıyorsanız, MFC DAO 3.6 Access 2000 veritabanını açmadan önce aşağıdaki kod satırını ekleyerek kullanmayı istediğinizi belirtebilirsiniz:
AfxGetModuleState()->m_dwVersion = 0x0601;
Programınızı CYourApp::Initinstance() işlevinde bu satırı ekleyin. Statik MFC kitaplıklarını ile geliştiriyorsanız, yapılar MFC DAO 3.6 kullanmak için statik almak için adımlar şunlardır:
-
MFC kaynak dizinindeki Daocore.cpp dosyasını değiştirin. Aşağıdaki yorum alırsınız:
// 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.5Aşağıdaki satırları ekleyin:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
Gereksinim duyduğunuz varyant kitaplığı yeniden oluşturun. Örneğin, hata ayıklama sürümü, statik MFC kitaplığı oluşturmak için Unicode olmayan, hiçbir tarayıcı dosyaları ile aşağıdaki komutu kullanın MFC\SRC klasöründeki komut isteminde:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Not: Emin olmak derleyici araçlar da yolunda olan ihtiyacınız var. Yoksa, Visual C++ \BIN klasöründe bulunan Vcvars32.bat dosyasını çalıştırmanız gerekebilir. Ayrıca kitaplıklarının bu yeni sürümlerini oluşturma sırasında eskileri önce kaydetmek istediğiniz şekilde bunlar MFC\LIB klasöründe mevcut olanları üst üzerinden kopyalanır olduğunu unutmayın.
Durum
Bu davranış normaldir.