Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí

Los objetos de acceso a los datos DAO y ADO

Introducción

Cuando queremos manipular los datos en una base de datos, tanto para acceder a la estructura de las tablas, consultas o directamente a los registros, el uso de objetos de acceso a los datos es muy útil. Podemos trabajar con datos locales, así como con datos remotos.

Históricamente hay dos modelos. El objetivo de este capítulo es revisar estos modelos. Antes de la versión Access 2000, solo existía el modelo DAO (Data Access Objects). Con la versión Access 2000, aparece un segundo modelo: ADO (ActiveX Data Objects).

Es muy recomendable utilizar el modelo más reciente, ADO, que presenta las ventajas respecto a su predecesor: un mejor soporte de Microsoft SQL Server, mejor rendimiento en modo cliente/servidor y un código más corto y sencillo de escribir.

Para la creación de una nueva aplicación, el uso del modelo DAO sigue siendo posible, pero es preferible trabajar con el modelo ADO, que hace permanente la aplicación.

Para terminar, en caso de una recuperación de una aplicación existente, es posible modificar y actualizar el código para hacerla evolucionar desde el modelo DAO al modelo ADO, de la misma manera que se realiza el mantenimiento solo del modelo DAO.

DAO

1. Introducción

DAO (Data Access Objects) es una librería de VBA que agrupa un conjunto de objetos, permitiendo acceder a una base de datos. Se utilizan estos objetos para acceder, al mismo tiempo, a las estructuras de los datos (tablas y consultas) y a los registros. El modelo tiene en cuenta dos espacios de trabajo posibles o entornos de base de datos:

El espacio de trabajo Microsoft Jet, que permite acceder a las bases de datos Access, a los servidores de bases de datos ODBC (Open DataBase Connectivity) y a las bases de datos externas, como por ejemplo Microsoft Excel, Paradox o dBase, accesibles gracias a un controlador ISAM (Indexed Sequential Access Method).

El espacio de trabajo ODBCDirect, que permite trabajar directamente con los servidores de datos ODBC sin pasar por el motor de base de datos Microsoft Office. Se recomienda este espacio de trabajo para ejecutar consultas, procedimientos almacenados o funciones específicas de ODBC en un servidor remoto tipo SQL Server.

Para usar la librería de objetos DAO, se debe marcar la referencia Microsoft Office 16.0 Access database engine Object Library. Tenga en cuenta que existe una referencia Microsoft DAO 3.6 Object Library en la lista de referencias, pero si intenta marcarla con Access 2021, recibirá un mensaje de error como el siguiente.

Images/cap6_pag2.png

2. Modelo de datos DAO

A continuación encontrará el modelo jerárquico de objetos del modelo DAO:

images/RI06_06.png

3. Descripción de las colecciones DAO

Para cada uno de los tipos de objeto DAO, podemos comprobar la existencia de una colección, excepto para el objeto DbEngine.

Colección

Conjunto de los objetos

Containers

Container, que agrupa los siguientes objetos de la base de datos: base de datos, formularios, módulos, relaciones, estados, macros, información interna de las relaciones, tablas y consultas.

Databases

Database, base de datos abierta en el espacio de trabajo. 

Documents

Document, nombre genérico dado al contenido de los Container.

Errors

Error, los errores del motor de acceso a los datos DBEngine.

Fields

Field, campo de una tabla (TableDef), consulta (QueryDef), índice (Index), juego de registros (Recordset) o relación (Relation).

Groups

Group, grupo de usuarios de un WorkSpace o grupo de usuarios al que pertenece un usuario (User).

Indexes

Index, índice de una tabla (TableDef).

Parameters

Parameter, argumento de una consulta (QueryDef).

Properties

Property, propiedad de un objeto.

QueryDefs

QueryDef, consulta de una base de datos (Database).

Recordsets

Recordset, juego de registros abierto de una base de datos (Database).

Relations

Relation, relación de una base de datos (Database).

TableDefs

TableDef, tabla de una base de datos (Database).

Users

User, usuario de un espacio de trabajo (WorkSpace) o miembro de un grupo de usuarios (Group).

Workspaces

Workspace, espacio de trabajo activo.

a. Propiedades

El conjunto de estas colecciones dispone de las siguientes propiedades:

Propiedad

Descripción

Count

Determina el número de elementos presentes en la colección.

Item

Determina un elemento específico de una colección, definida tanto por su nombre como por su identificador dentro de la colección.

Por ejemplo, para visualizar el nombre de cada una de las consultas de la base de datos actual:

Sub ListaConsultas() 
Dim i As Integer 
For i = 0 To CurrentDb.QueryDefs.Count...

ADO

1. Introducción

ADO (ActiveX Data Objects) es una librería de VBA que agrupa un conjunto de objetos que permite acceder a una base de datos. Se utilizan estos objetos para acceder a las estructuras de datos (tablas, consultas), así como para manipular los registros. El modelo tiene en cuenta el entorno de base de datos OLE DB. Esta librería tiene mejor rendimiento que DAO, y permite fundamentalmente realizar aplicaciones cliente/servidor, así como aplicaciones web.

Para utilizar la librería de objetos ADO, es necesario añadir la referencia Microsoft ActiveX Data Objects 6.0 Library a la lista de referencias. Puede realizar esta operación seleccionando la pestaña Referencias del menú Herramientas. Si no encuentra directamente esta referencia en la lista de referencias disponibles, puede hacer clic en el botón Examinar y buscar su ubicación. El archivo msadoXX.dll generalmente está en la siguiente carpeta: C:\Program Files (x86)\Common Files\System\ado

Adicionalmente, el archivo de ayuda ADO210.chm proporcionado con los ejemplos de este libro, le será de utilidad para encontrar información detallada del uso del modelo de objetos DAO.

2. ADO y OLE DB

La tecnología OLE DB permite un acceso uniforme a los diferentes datos almacenados en diferentes fuentes de información (base de datos relacionales, mensajería, sistema de archivos, etc.).

Más abajo está la arquitectura tecnológica que relaciona ADO y OLE DB.

Images/ri06_1.png

3. Modelo de datos ADO

El siguiente esquema representa las diferentes colecciones de objetos contenidos en la jerarquía ADO.

images/RI06_33.png

El proceso de un acceso a los datos por medio de la librería ADO es el siguiente:

1.

Crear una conexión Connection a la fuente que contiene los datos.

2.

Escribir el comando SQL Command.

3.

Enviar el comando a través de la conexión Connection. Dependiendo de si el comando devuelve o no datos, llegado el caso estos se almacenan en un objeto Recordset.

4.

Moverse por el juego de registros, añadir un nuevo registro, actualizar y eliminar.

5.

Validar y anular la transacción si se inició durante la apertura de la conexión.

4. Descripción de los objetos ADO

Tipo de objeto

Descripción

Connection

Representa una conexión a una fuente de datos.

Command

Representa una consulta o una instrucción que se ejecutará en una fuente de datos.

Recordset

Representa un juego de registros que proviene de una consulta o instrucción.

Record

Representa un registro único. Su modo de funcionamiento es muy cercano al del Recordset, siendo sin embargo su uso pertinente y más eficaz en caso de que el comando Command solo devuelva un único registro, en lugar de varios.

Stream

Representa un flujo de información legible, en el que se podrá leer, escribir o gestionar texto o datos binarios.

5. Descripción de las colecciones ADO

Colección

Conjunto de objetos

Parameters

Parameter, argumento del objeto Command.

Properties

Property, una característica de los objetos Command, Connection y Recordset.

Errors

Error, error durante el intento de conexión a una fuente de datos.

Fields

Field, campo de un juego de registros Recordset o de un único registro Record.

El conjunto de estas colecciones dispone de las siguientes propiedades:...