jueves, 15 de diciembre de 2011

Comunicación con Access

Al igual que hicimos con Word en una publicación anterior esta vez lo haremos con Access utilizando como referencia “microsoft activex data objects 6.0 library” en mi caso, aunque vosotros podréis tener una versión inferior si utilizáis Excel 2007.



Cada biblioteca utiliza memoria y reduce el rendimiento, no utilicemos bibliotecas que sabemos que no son necesarias para nuestra aplicación.

Después de especificar la biblioteca, estamos listos para iniciar el código que nos comunicara con la base de datos.

Para que nos sea más sencillo reconocer cada una de los objetos y propiedades que utilizamos analizaremos paso a paso (análisis forense) cada línea de código.

Abrimos el procedimiento.

Sub ExportarDB()

Declaramos los objetos ADO (ActiveX Data Objects ) que utilizaremos.

Dim Datos As New ADODB.Recordset

El objeto Recordset de ADO se utiliza para mantener un conjunto de registros de una tabla de base de datos.
En ADO, este objeto es el más importante y el más usado para manipular los datos de una base de datos.

Dim Conexion As New ADODB.Connection

El objeto connection de ADO se utiliza para crear una conexión abierta a un origen de datos, a través de esta conexión, se puede acceder y manipular una base de datos.

Dim CaminoConexion As String
Dim InstruccionSQL As String

Desactivamos la actualización de la pantalla...

Application.ScreenUpdating = False

Seleccionamos la hoja donde copiaremos los datos.
   
Hoja1.Select  

Seleccionamos todos los datos de la tabla “Datos” con una instrucción SQL.
 
InstruccionSQL = "SELECT Datos.* FROM Datos"

CaminoConexion = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\DBDatos.accdb"

La propiedad Provider (proveedor) establece o devuelve el nombre del proveedor.
La propiedad Source especifica una expresión de cadena que representa al objeto, que en este caso es la dirección de la DB donde tomara los datos.
   
Conexion.Open ConnectionString:=CaminoConexion

ConnectionString establece o devuelve los datos utilizados para crear una conexión con una fuente de datos.

Establecida la conexión abrimos la tabla donde tenemos los datos.
   
Datos.Open Source:=InstruccionSQL, ActiveConnection:=Conexion

If Datos.EOF = True Then

La función EOF devuelve False hasta que se haya llegado al final del archivo.

MsgBox "No se encontraron datos"
Else
Range("A3").CopyFromRecordset Data:=Datos

CopyFromRecordset copia el contenido de un objeto Recordset ADO o DAO en una hoja de cálculo…

Hoja1.Range("A:E").Columns.AutoFit

Esta línea autoajusta las columnas a los datos exportados de la DB

End If

Liberamos la memoria de datos.....
   
Conexion.Close Set Conexion = Nothing
Set Datos = Nothing
End Sub

Y ya tendríamos los datos listos en Excel para utilizarlos.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.