Problemas de acesso a base de dados Access 2000/2002


Ao tentar se conectar a uma base de dados Access 2000 usando o controle Data Control ou o assistente - Form Wizard - você pode se deparar com uma das seguintes mensagens de erro :

a-) Se você estiver usando ADO com o provedor : Microsoft.Jet.OLEDB.3.5.1.Provider

- Run-time error 3343 - Unrecognized Database Format '..\nome_do_banco_de_dados.mdb

b-) Se você estiver usando DAO com Microsoft DAO 3.51 Object Library

- Run-time error -2147467259 - Unrecognized Database Format '..\nome_do_banco_de_dados.mdb

Por quê ?

Elementar meu caro Watson !!!

- O Data Control usa a versão 3.51 da DAO - Data Access Object - para fazer a conexão com um banco de dados Access , usa portanto o Jet 3.51.

- O assistente - Form Wizard - usa o Jet 3.51 OLE DB Provider para fazer a conexão , e , portanto , também usa o Jet 3.51.

Acontece que a versão 3.51 do Jet engine NÃO CONSEGUE fazer a conexão com o formato de banco de dados do Access 2000 somente com versões anteriores.

O Access 2000 e 2002 usam a versão Jet 4.0 que cria arquivos de banco de dados no formato do Jet 4.0 . O jet 3.51 não reconhece este formato.

Como Resolver o Problema ?

Você pode contornar o problema usando uma das seguintes técnicas :

1- Instale o Visual Studio Service Pack 4 ou superior. Após a instalação a opção - Access 200 - será incluida na propriedade Connect. (se você estiver usando o Data Control , muda a propriedade Connect para Access 2000 .)

2- Para ADO ou para ADo Data Control , use o provedor - Microsoft.Jet.OLEDB.4.0.1.

3- Se você estiver usando um Data Control genérico , você precisa abrir um recordset usando a DAO 3.6 e atribuí-lo a fonte de dados dos controles conforme abaixo :

Option Explicit
Private DaoDB36 as DataBase
Private rs As Recordset
Dim caminho as String

Private Sub Form_Load()

  caminho = "c:\teste\Northwind.mdb"

  Set daoDB36 = DBEngine(0).OpenDataBase(caminho)
  Set rs = daoDB36.OpenRecordset("Clientes")
  Set Data1.Recordset = rs

End Sub

Service Packs - O que são , pra que serverm ?

Os services packs são uma das formas da Microsoft corrigir erros (bugs) e assim manter o produto atualizado e funcionando da melhor forma possível. Eles incluem atualizações , ferramentas , drivers , e componentes adicionais. Os services packs são cumulativos , ou seja, cada novo pacote contém todas as correções e atualizações que já foram disponibilizados em pacotes anteriores ; desta forma você não precisa instalar um versão anterior de um service pack e depois a atual para que tudo esta atualizado. Para o Visual Basic 6.0 o último service pack é o da versão 5.0 9 ( SP5 ).

O Visual Studio Service Pack 5.0 que atualiza o VB 6.0 esta disponível no seguinte endereço :

http://msdn.microsoft.com/vstudio/sp/vs6sp5/default.asp

obs: Para saber qual versão do service pack você tem instalada verifique a informação no menu Help opção About...

até mais ...


José Carlos Macoratti