domingo, 23 de abril de 2017

Post Mejorado: Ejecutar la instrucción DELETE de SQL desde excel usando solo el objeto ADODB.connection de vba

En el post Ejecutar la instrucción DELETE de SQL desde Excel usando VBA vimos como realizar operaciones con bases de datos desde excel. Para esto, utilizamos una conexión y después mediante el uso de un objeto comando, enviamos la instrucción a la base de datos. Hoy vamos a mejorar este código, utilizando solamente la conexión y no vamos a hacer uso del comando. Ya quedará al gusto de cada uno de ustedes, seguir escribiendo sus propios programas como más les guste.

Entonces, vamos a recordar el código inicial:


Como pueden ver, las lineas finales, donde se inicia la instrucción with, es donde esta nuestro comando. Vamos entonces a eliminarlas y reemplazarlas de la siguiente manera:


De esta forma, ya no necesitamos declarar el objeto command ni el código asociado al mismo.
Por último y para ser más rigurosos con nuestro código, vamos a cerrar la conexión y a eliminar la referencia al objeto:


Nuestra tabla en access luce de la siguiente forma:


Y al ejecutar nuestra macro queda así (Recuerden, paso a paso con F8 y F5 para ejecutar en un solo paso):


La tabla de nuestra base de datos ha quedado limpia, que era el objetivo de la macro. Este método abreviado lo pueden utilizar en cualquier macro y sirve para mejorar otros ejemplos que ya habíamos visto con anterioridad en este mismo blog.

Aquí les dejo el código:

Código
Sub borrar_datos()
Dim cnn As New ADODB.Connection
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
'Y Ejecutamos la instruccion SQL
cnn.Execute "DELETE * FROM tblReales"
cnn.Close
Set cnn = Nothing
End Sub
view raw delete_sql.vb hosted with ❤ by GitHub

Espero les sirva. Hasta una próxima.

No hay comentarios.:

Publicar un comentario