viernes, 31 de marzo de 2017

Ejecutar la instrucción DELETE de SQL desde Excel usando VBA

Vamos a iniciar una serie de posts en los que vamos a utilizar las instrucciones básicas de SQL para borrar, actualizar e insertar datos desde excel en una tabla de una base de datos. Para nuestros ejemplos, vamos a utilizar una base de datos construida en Ms Access, pero podemos reutilizar el código para hacer las operaciones con una base de datos de Oracle, SQL Server, My SQL y otras más.

Este primer post, es sobre el uso de la instrucción DELETE. Sencilla pero poderosa y de mucho cuidado, pues después de ejecutada no la podremos deshacer. En este ejemplo, vamos a construir una macro que va a combinar vba y sql. En mi opinión una combinación poderosa que nos va a servir para solucionar muchas de las necesidades que tengamos en nuestro trabajo.

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 DELETE es la siguiente: DELETE * FROM nombre de la tabla. tblReales es la tabla de la que queremos borrar los datos. Esa tabla contiene la siguiente información:


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 limpia, sin datos. Este ejercicio es de sumo cuidado, pues si lo que quieren es borrar 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.

Código:
Espero que les sea de gran ayuda.


1 comentario: