Acessando uma base de dados Access 2000 com DAO.


Você acabou de instalar o pacote Office 2000 , e com ele o Access 2000. A sua versão do Access 97 foi desinstalada e agora você quer acessar o banco de dados da nova versão.

Se você tentar abrir um banco de dados do Access 2000 no Access 97 não vai conseguir . Surpresa !!! (era de se esperar...) Vai receber a mensagem a seguir:

Você não consegue abrir uma base de dados da Versão 2000 na versão anterior (Access 97).

Se estiver usando ActiveX Data Objects ( ADO ) ou o ADO Data control mensagem de erro poderá ser:

Run-time error -2147467259 Unrecognized Database Format XXX

Outra surpresa !!! Se você tentar abrir o banco de dados biblio_2001.mdb usando o Data Control ( VB5 ou VB6) também não vai conseguir.

Por quê ?????

O Access 2000 usa a versão Jet 4.0 a qual cria o arquivo de banco de dados no formato do Jet 4.0. Logo os componentes da versão 3.5 não reconhecem este formato.

Como resolver o problema ???

- Atualize a sua versão do Jet instalando o  service Pack 5 ou superior para o Visual Studio .Veja como fazer isto no link :

Como: Obter o Último Service Pack para o Mecanismo de Banco de Dados do Microsoft Jet 4.0

- Se estiver usando o Data control altere a propriedade Connect para Access 2000.

- Se for usar ADO ou ADO Data Control , use a referência ao provedor - Microsoft.Jet.OLEDB.4.0

- Se for usar DAO use a referência a - Microsoft DAO 3.6 Object Library. ( Menu Project-> References... )  selecione Microsoft DAO 3.6 Object Library

Access 2000 com DAO Data Control

1- Inicie um novo projeto no VB e no formulário padrão inclua três caixas de texto - Text1, Text2 e Text3 e um controle DAO Data control - Data1.

2- Faça referência a - Microsoft DAO 3.6 Object Library

3- A seguir defina a propriedade - DataSource - de cada caixa de texto igual a Data1

4- No evento Load do Formulário insira o seguinte código:

Private Sub Form_Load()
Data1.DatabaseName = "c:\teste\Biblio_2001.mdb"
Data1.RecordsetType = 1
Data1.RecordSource = "Authors"
Text1.DataField = "Au_Id"
Text2.DataField = "Author"
Text3.DataField = "Year Born"
End Sub

Execute o projeto e veja :

Access 2000 com ADO Data Control

Para não ter problemas deste tipo você pode usar os novos controles vinculados ADO Data Control. Você somente tem que ter o cuidado de usar o provedor Microsoft.Jet.OLEDB.4.0 .Vejamos abaixo como fica o mesmo exemplo agora usando o ADO Data Control:

1- Primeiro temos que incluir o componente no projeto através do menu Project | Components... - Microsoft ADO Data Control 6.0

2- Insira o seguinte código no evento Load do formulário :

Private Sub Form_Load()
' Indicar base de dados que vamos usar
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\biblio_2001.mdb"                                                    

'definir o cursor e a tabela
Adodc1.CursorType = adOpenDynamic
Adodc1.RecordSource = "Authors"
Adodc1.Refresh


Set Text1.DataSource = Adodc1
Set Text2.DataSource = Adodc1
Set Text3.DataSource = Adodc1

'ligar os campos as caixas de texto
Text1.DataField = "Au_Id"
Text2.DataField = "Author"
Text3.DataField = "Year Born"
End Sub

3- Agora para exibir o registro inclua o seguinte código no evento:

Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
On Local Error Resume Next

Adodc1.Caption = "Registro: " & Adodc1.Recordset!Au_ID
Err = 0

End Sub

4- Agora execute e veja o resultado.

Até mais...