Eliminar registros de Base de Access desde Excel usando SQL Query, VBA y ADO
Ver curso completo Conectar Excel a Access usando VBA y ADO
En este tutorial voy a mostrarte un código VBA que nos servirá para dar de baja registros almacenados en una Tabla de Acccess, alojada en una Base de datos. Nos conectaremos mediante ADODB a Access y mandaremos ejecutar una consulta SQL con el comando DELETE. Este es el cuarto video de una serie de tutoriales sobre cómo conectarnos a de Excel a Access:
-
Insertar registros en tabla de Access desde Excel usando VBA y ADO.
-
Buscar registros en tabla de Access desde Excel usando SQL Query, VBA y ADO.
-
Generar Reportes de Base de Access desde Excel usando SQL Query, VBA y ADO.
Microsoft ActiveX Data Objects (ADO)
ADO es uno de los mecanismos que habilita a las aplicaciones cliente para conectarse a distintos orígenes de datos y acceder y manipular la información o los datos. La conexión de las aplicaciones hacia los orígenes de de datos se hace mediante proveedores OLEDB, que para nuestro tutorial usaremos un proveedor para conectarnos a una Base de datos de Access.
Ver video Eliminar registros de tabla Access
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Activar Referencia en el IDE de Visual Basic para aplicaciones
Antes de escribir cualquier código para conectarnos a una base de datos mediante ADO es importante activar la referencia a la librería de ADO.
-
Abrimos el IDE de VBA usando Alt + F11.
-
Abrimos el menú Herramientas > Referencias.
-
Marcamos Microsoft ActiveX Data Objects 6.1 Library.
Figura 1. Activamos la referencia a Microsoft ActiveX Data Objects 6.1 Library (ADO).
Base de datos Access y tabla Ventas
Para este tutorial usaremos la misma base de datos MiBase.accdb y la tabla MiTabla. En dicha tabla daremos de alta registros, los consultaremos y tendremos la opción de eliminarlos.
Figura 2. Base de datos y Tabla de Access.
Formulario de Consulta y Baja
En el formulario de consulta le añadiremos un botón que llamaremos Eliminar seleccionado, que nos servirá para eliminar el elemento seleccionado de la tabla MiTabla. El formulario Consulta tendrá el siguiente funcionamiento:
-
Consultamos registros que cumplan con una condición.
-
Al dar clic en el botón Eliminar seleccionado se validará si hay un elemento seleccionado.
-
En caso de haber un elemento seleccionado se validará si el elemento es el encabezado.
-
Si el elemento seleccionado es el encabezado, la macro se detendrá.
-
Si elegimos otro elemento, se eliminará de la Tabla MiTabla.
-
Mandaremos llamar al botón Buscar para generar de nuevo la búsqueda.
Figura 3. Formulario de consulta y Baja de registros en Tabla de Access.
Código VBA de la macro
El siguiente código será ejecutado por el botón Eliminar seleccionado que se llama CommandButton3.
Nota: Es importante que la base de datos de Access se encuentre en la misma ruta de este archivo para que funcione esta macro. La base de datos tiene como nombre MiBase.accdb.
Private Sub CommandButton3_Click() Dim Conn As ADODB.Connection Dim MiConexion Dim Rs As ADODB.Recordset Dim MiBase As String Dim Query As String Dim i, j Dim Cuenta As Integer Dim Numero As Integer Dim ValorElegido As Integer 'Recorrer el listbox y detectar el item elegido ''''''''''''''''''''''''''''''' Cuenta = Me.ListBox1.ListCount 'Validamos que haya un elemento seleccionado For i = 0 To Cuenta - 1 If Me.ListBox1.Selected(i) = True Then Numero = Numero + 1 End If Next i If Numero = 0 Then MsgBox "Debes elegir un elemento", vbExclamation, "EXCELeINFO": Exit Sub For j = 0 To Cuenta - 1 If Me.ListBox1.Selected(j) = True Then If Me.ListBox1.ListIndex = 0 Then MsgBox "Encabezado!", vbCritical, "EXCELeINFO": Exit Sub ValorElegido = Me.ListBox1.List(j) 'MsgBox ValorElegido End If Next j ''''''''''''''''''''''''''''''' MiBase = "MiBase.accdb" Set Conn = New ADODB.Connection MiConexion = Application.ThisWorkbook.Path & Application.PathSeparator & MiBase With Conn .Provider = "Microsoft.ACE.OLEDB.12.0" .Open MiConexion End With Query = "DELETE * FROM MiTabla WHERE Id = " & ValorElegido Set Rs = New ADODB.Recordset Rs.CursorLocation = adUseServer Rs.Open Source:=Query, _ ActiveConnection:=Conn 'Cerrar la conexión 'Rs.Close Conn.Close Set Rs = Nothing Set Conn = Nothing 'Ejecutamos botón de Buscar Call CommandButton1_Click End Sub
Descarga el archivo de ejemplo
Alta, Baja, Búsqueda y Reportes en Tabla de Access desde Excel con VBA.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.