Eliminar registros de Base de Access desde Excel usando SQL Query, VBA y ADO

Eliminar registros de Base de Access desde Excel usando SQL Query, VBA y ADO

Tip 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:

  1. Insertar registros en tabla de Access desde Excel usando VBA y ADO.

  2. Buscar registros en tabla de Access desde Excel usando SQL Query, VBA y ADO.

  3. 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.

Activamos la referencia a Microsoft ActiveX Data Objects 6.1 Library (ADO).

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.

Base de datos y Tabla de Access.

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.

Formulario de consulta y Baja de registros en Tabla de Access.

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.

You may also like...