Sintomas
Quando abrir uma base de dados criada no Access 2000 através de classes MFC DAO no Visual C++, recebe a seguinte mensagem de erro:
Formato de base de dados não reconhecido.
Também receber esta mensagem quando tentar criar uma nova base de dados de MFC DAO SDI ou projecto MDI utilizando AppWizard de MFC.
Causa
Esta mensagem de erro ocorre porque o DAO MFC classes desse navio com a carga de Visual C++ 6.0 DAO 3.5 (Dao350) por predefinição. DAO 3.5 utiliza Jet 3.5, que só pode abrir o formato do Jet 3.5 (ou anterior) bases de dados. Access 2000 cria o formato do Jet 4.0 ficheiros de base de dados, que são não reconhecidos para Jet 3.5. Para abrir com êxito uma base de dados do Access 2000 utilizando as classes MFC DAO, é necessário utilizar o DAO 3.6 (Dao360. dll). Utiliza o DAO 3.6 Jet 4.0, que pode abrir qualquer formato de base de dados do Access disponível.
Resolução
Actualmente, não existe solução para utilizar AppWizard com origens de dados do Access 2000.
Para a aplicação para utilizar o DAO versão 3.6, tem de actualizar a versão do MFC em tempo de execução para MFC versão 6.01. Para o fazer depende se estiver a criar a aplicação para utilizar a DLL de MFC ou para construir com as bibliotecas estáticas para MFC.
Se estiver a ligar com a DLL de MFC, pode especificar que pretende que o MFC para utilizar o DAO 3.6, introduzindo a seguinte linha de código antes de abrir uma base de dados do Access 2000:
AfxGetModuleState()->m_dwVersion = 0x0601;
Inserir linha na função CYourApp::Initinstance() do programa. Se estiver a criar com as bibliotecas MFC estáticas, seguem-se os passos para fazer estático cria de MFC para utilizar o DAO 3.6:
-
Modificar o ficheiro Daocore.cpp no directório de origem MFC. Receberá o seguinte comentário:
// 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.5Adicione as seguintes linhas:
#undef _MFC_VER
#define _MFC_VER 0x0601 -
Reconstrua a biblioteca para a variante que necessita. Por exemplo, para criar a biblioteca MFC estática, versão de depuração, não-Unicode, com ficheiros do browser utilizar o seguinte comando na linha de comandos na pasta MFC\SRC:
nmake DEBUG=1
for release:
nmake DEBUG=0
for unicode builds:
nmake DEBUG=1 UNICODE=1
nmake DEBUG=0 UNICODE=1
Nota É necessário para se certificar de que as ferramentas de compilador estão no caminho. Caso contrário, poderá ter de executar o ficheiro de Vcvars32.bat, localizado na pasta \BIN Visual C++. Tenha também em atenção que, quando criar estas novas versões das bibliotecas, serão copiados no topo do existentes na pasta MFC\LIB, de forma que pretende guardar os ficheiros mais antigos primeiro.
Estado
Este comportamento ocorre por predefinição.