En este segundo post, vamos a ejecutar la instrucción UPDATE que básicamente es para actualizar registros en una base de datos. Sencilla pero poderosa y de mucho cuidado, pues después de ejecutada no la podremos deshacer. Nuevamente, vamos a construir una macro que va a combinar vba y sql.
Vamos a iniciar abriendo un archivo de excel, y vamos a dar la combinación de teclas Alt + F11 para abrir el editor de visual basic. Nos deberá aparecer la siguiente ventana:
Seleccionamos la opción para insertar un módulo:
Y estamos listos para iniciar a escribir nuestro código:
Para realizar las operaciones con la base de datos y poder acceder a los objetos de la misma, vamos a trabajar con la librería ADO. Dicha librería no esta disponible por defecto, así que vamos a entrar al menú del editor, seleccionamos la opción Herramientas y después Referencias:
En el cuadro de dialogo que se despliega, vamos a buscar la opción: Microsoft ActiveX Data Objects 2.8 Library, la seleccionamos y le damos aceptar:
Escribimos el nombre de nuestra macro y estamos listos para iniciar a codificar:
Para poder interactuar mediante ADO con cualquier base de datos vamos a necesitar una conexión, que es el canal y un objeto para pasar las instrucciones que queremos se ejecuten en la base de datos. Dicho esto, vamos a crear los dos objetos en nuestro programa:
Vamos a pasar los parámetros para nuestra conexión:
En verde, están los comentarios que documentan nuestro código. Ahora vamos a construir nuestro comando de la siguiente forma:
La forma general de la instrucción UPDATE es la siguiente: UPDATE nombre tabla SET nombre campo. tblReales es la tabla de la que queremos actualizar los datos, en este caso el campo a actualizar es geografia. Esa tabla contiene la siguiente información:
El campo geografía actualmente tiene contiene el texto: Mexico para todos los registros. Lo que vamos a hacer es actualizarlo por Colombia.
Vamos entonces a ejecutar nuestro código para confirmar que funciona, como saben lo podemos hacer paso a paso con F8 o ejecutarla en un solo paso. Yo lo voy a hacer en un solo paso y vamos a verificar de nuevo que la tabla este limpia en Ms Access:
Como pueden ver, nuestra tabla esta actualizada. Este ejercicio es de sumo cuidado, pues si lo que quieren es actualizar un subconjunto de los datos contenidos en la tabla, deben incluir la clausula WHERE. En otro post veremos como usarla y por supuesto construiremos una macro para cargar los datos en la misma tabla.
A continuación el código fuente. Espero les sirva:
Código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sub actualizar_datos() | |
Dim cnn As New ADODB.Connection | |
Dim cmd As New ADODB.Command | |
cnn.Provider = "Microsoft.ACE.OLEDB.12.0" 'Este es el proveedor para conectarnos a Access | |
'En caso de que nos quisieramos conectar a SQL Server, debemos utilizar el proveedor adecuado | |
'En la siguiente instrucción le indicamos al programa la ruta donde esta | |
'la base de datos y el nombre de la misma | |
cnn.Properties("Data Source") = "C:\Users\edualzja\Documents\Gastos Gestionables MEX.accdb" | |
'Dejamos el password en blanco, asi funciona por defecto en access | |
'en otras bases deberemos especificar el usuario y la contraseña | |
cnn.Properties("Jet OLEDB:Database Password") = "" | |
'Por último abrimos la conexión | |
cnn.Open | |
With cmd | |
.ActiveConnection = cnn 'esta es la conexión que creamos en el paso anterior | |
.CommandText = "UPDATE tblReales SET geografia='Colombia'" 'esta es la instruccion SQL para actualizar | |
.CommandType = adCmdText | |
.Execute 'Esta es la instrucción para ejecutar el comando | |
End With | |
End Sub |
Excelente!!! Gracias por Compartir.
ResponderBorrarGracias por el aporte!
ResponderBorrar