DAO e ADO: Por que dois modelos de objetos de Banco de Dados?
Como se a programação de banco de dados não fosse já bastante complexa com um único conjunto de padrões, a partir da versão 2000 o Access oferece dois padrões para trabalhar diretamente com dados.
A biblioteca Data Access Objects (DAO) foi projetada especificamente para o uso com o motor de banco de dados do Access, (chamado também “Jet”).
Pelo contrário, a biblioteca ActiveX Data Objects (ADO) está projetada para ser mais genérica e suportar qualquer banco de dados que o Access possa conectar.
É importante estar ciente de que o modelo de objeto você está utilizando no seu código, porque os objetos, propriedades e métodos que você utiliza são diferentes entre ambos os modelos.
Qual destas bibliotecas de objetos você utiliza em um bd vem determinada pela referência de biblioteca de objetos do Visual Basic para o bancos de dados.
Os bd’s que você criar a partir da versão do Access2000 têm uma referência à biblioteca ADO. Por outro lado, se você atualizar um bd a partir de uma versão anterior, seu projeto conterá automaticamente uma referência à biblioteca de objetos DAO.
Em qualquer caso você poderá especificar as bibliotecas que quer utilizar na caixa de diálogo Referências.
Se você incluir uma referência a ambas as bibliotecas, poderá até utilizar as duas no mesmo aplicativo, definindo conjuntos de registros no seu código com os tipos de dados DAO.Recordset e ADODB.Recordset.
Como você deve decidir que modelo utilizar? Além de outras considerações, o modelo ADO é algo mais simples que o DAO. Também você deve utilizar o ADO para trabalhar com bd’s armazenados no Microsoft SQL Server.
Por outro lado, se você quiser escrever código que faça mudanças na estrutura (como nos campos e propriedades) de tabelas e consultas de um bd Jet (.mdb), você deve utilizar o DAO.
Além do mais, o Recorset que o Access utiliza para formulários, aquele retornado pela propriedade RecorsetClone, é um objeto DAO Recordset. Portanto, você deve utilizar DAO se quiser trabalhar com conjuntos de registros por trás dos formulários.
A primeira camada de hierarquia DAO começa com o objeto DBEngine, que representa o motor de banco de dados Access subjacente. O objeto Engine tem uma coleção Workspaces, que, por sua vez, tem uma coleção Databases que tem muitas outras coleções, e assim por diante.
A hierarquia ADO corta isto um pouco mais rapidamente. Começa com o objeto Connection, que é similar ao objeto de Banco de Dados DAO, mas poderá representar uma conexão com qualquer motor de banco de dados.
*Adaptado de um texto de Evan Callahan
Como se a programação de banco de dados não fosse já bastante complexa com um único conjunto de padrões, a partir da versão 2000 o Access oferece dois padrões para trabalhar diretamente com dados.
A biblioteca Data Access Objects (DAO) foi projetada especificamente para o uso com o motor de banco de dados do Access, (chamado também “Jet”).
Pelo contrário, a biblioteca ActiveX Data Objects (ADO) está projetada para ser mais genérica e suportar qualquer banco de dados que o Access possa conectar.
É importante estar ciente de que o modelo de objeto você está utilizando no seu código, porque os objetos, propriedades e métodos que você utiliza são diferentes entre ambos os modelos.
Qual destas bibliotecas de objetos você utiliza em um bd vem determinada pela referência de biblioteca de objetos do Visual Basic para o bancos de dados.
Os bd’s que você criar a partir da versão do Access2000 têm uma referência à biblioteca ADO. Por outro lado, se você atualizar um bd a partir de uma versão anterior, seu projeto conterá automaticamente uma referência à biblioteca de objetos DAO.
Em qualquer caso você poderá especificar as bibliotecas que quer utilizar na caixa de diálogo Referências.
Se você incluir uma referência a ambas as bibliotecas, poderá até utilizar as duas no mesmo aplicativo, definindo conjuntos de registros no seu código com os tipos de dados DAO.Recordset e ADODB.Recordset.
Como você deve decidir que modelo utilizar? Além de outras considerações, o modelo ADO é algo mais simples que o DAO. Também você deve utilizar o ADO para trabalhar com bd’s armazenados no Microsoft SQL Server.
Por outro lado, se você quiser escrever código que faça mudanças na estrutura (como nos campos e propriedades) de tabelas e consultas de um bd Jet (.mdb), você deve utilizar o DAO.
Além do mais, o Recorset que o Access utiliza para formulários, aquele retornado pela propriedade RecorsetClone, é um objeto DAO Recordset. Portanto, você deve utilizar DAO se quiser trabalhar com conjuntos de registros por trás dos formulários.
A primeira camada de hierarquia DAO começa com o objeto DBEngine, que representa o motor de banco de dados Access subjacente. O objeto Engine tem uma coleção Workspaces, que, por sua vez, tem uma coleção Databases que tem muitas outras coleções, e assim por diante.
A hierarquia ADO corta isto um pouco mais rapidamente. Começa com o objeto Connection, que é similar ao objeto de Banco de Dados DAO, mas poderá representar uma conexão com qualquer motor de banco de dados.
*Adaptado de um texto de Evan Callahan