Está en la página 1de 3

VIDEO 44.

Practica final
Vamos a tener que ver programación en ADO para trabajar con base datos externas dinámicas.
Empezamos por el formulario de usuario.

VIDEO 46
Acceso a datos externos desde VBA Excel
Como vamos a conectar desde nuestra aplicación a una base de datos
Desde el código vamos a usar otro modelo de objetos
ADO Active X Data Object (conjuntos de objetos COM). Que sería una capa intermedia entre los dos.
Tiene dos objetos que más nos interesa:
1. Objeto Conexión
2. Objeto Recordset
LOS PASOS SON:
1ro establecer la conexión creando objeto Conexión.
2do capturamos la información deseada creando objeto Recordset. Que es una tabla cache, que se crea en la memoria
del pc.
3ro para acceder a la información almacenada a Recordset desde código VBA utilizando métodos y propiedades del
objeto Recordset.
Los métodos y propiedades que nos interesa son:
 MoveNext son los métodos
 MoveLast
 MovePrev
 EOF final de archivo son las propiedades
 BOF principio de archivo

En VBA Excel lo primero que vamos a hacer es crear un modulo independiente que comunique/conecte con gestión de
pedidos.

Como vamos a usar objetos del lenguaje ADO tenemos que


cargar la librería
Desde herramientas, referencias buscamos la última versión
disponible y la cargamos.

Probamos creando una variable de la colección ADO.


Los objetos de esta librería que nos interesa como dijimos son:

Option Explicit
Sub importar_datos()
Dim miconexion As New ADODB.Connection
'ya creamos el objeto colección
Dim mirecordset As New ADODB.Recordset 'así creamos una tabla virtual
End Sub

Option Explicit
Sub importar_datos()
Dim miconexion As New ADODB.Connection
'ya creamos el objeto coleccion
Dim mirecordset As New ADODB.Recordset
'asi creamos una tabla virtual
'ha que decirle con que conecta
'hay que decirle que informacion quiero de la base de datos
'pra ambas cosas tengo que declarar variables string
Dim tipoConexion As String 'para especificar con que conectamos
Dim InstruccionSql As String 'para especificar que variables traemos
'para conectar primero tengo que especificar el driver
'expicitado el driver le digo que tipo de datos voy a usar de paso
tipoConexion = "Provider=Microsoft.ACE.OLEDB.17.0; Data
Source=C:\Users\Javier\Desktop\Final\Gestion_Pedidos.accdb"
'de esta manera le digo que es lo que quiero traer, especifico que traigo
InstruccionSql = "SELECT [CÓDIGO ARTÍCULO], SECCIÓN, [NOMBRE ARTÍCULO], PRECIO, FECHA,
IMPORTADO, [PAÍS DE ORIGEN] FROM PRODUCTOS"
'hay que abrir la informacion de la conexion y el recordset
miconexion.Open tipoConexion
mirecordset.Open InstruccionSql, miconexion, adOpenDynamic, adLockOptimistic
'ahora para ver la tabla vamos a usar un bucle while
While mirecordset.EOF = False 'mientras no llegues al final
Debug.Print mirecordset![NOMBRE ARTÍCULO] 'le digo que me muestre la informacion en a ventana inmediato
mirecordset.MoveNext
Wend
End Sub

Debug.Print mirecordset![NOMBRE ARTÍCULO] & " " & mirecordset!; SECCIÓN & " " & mirecordset!PRECIO
para traer mas de una columna/ campos concateno de esta manera
El código limpio quedaría hasta este punto:

Option Explicit
Sub importar_datos()
Dim miconexion As New ADODB.Connection
Dim mirecordset As New ADODB.Recordset
Dim tipoConexion As String
Dim InstruccionSql As String
tipoConexion = "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=C:\Users\Javier\Desktop\Final\Gestion_Pedidos.accdb"
InstruccionSql = "SELECT [CÓDIGO ARTÍCULO], SECCIÓN, [NOMBRE ARTÍCULO], PRECIO, FECHA, IMPORTADO,
[PAÍS DE ORIGEN] FROM PRODUCTOS"
miconexion.Open tipoConexion
mirecordset.Open InstruccionSql, miconexion, adOpenDynamic, adLockOptimistic
While mirecordset.EOF = False
Debug.Print mirecordset![NOMBRE ARTÍCULO] & " " & mirecordset!SECCIÓN & " " & mirecordset!PRECIO
mirecordset.MoveNext
Wend
End Sub

El método getOpenFileName permite abrir una ventada de búsqueda

Evento del formulario


Initialize

Para cargar el menú desplegable, empleamos un bucle for each


Tenemos que detectar el final del rango para seleccionarlo
Una vez que hacemos eso si empleamos el bucle

También podría gustarte