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 :
- 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...