¿Cómo puedo hacer para que se me borren unas tablas cada vez que cierro el access?

Tengo una base de datos en la que importo 4 tablas diferentes de otra base de datos, con una macro autoejecutable cada vez que abro la base, y quiero que al cerrarla se borren.

1 respuesta

Respuesta
1

Lo que puedes hacer es lo siguiente:

Puedes poner un código que te elimna las tablas en el evento al descargar el formulario que tienes abierto antes de cerrar la base de datos el código seria el siguiente:

Sub eleminarTablas()
Dim DropTabla As ADODB.Command
Set DropTabla = New ADODB.Command
With DropTabla
.ActiveConnection = CurrentProject.Connection
.CommandText = "Drop table [Nombre de la tabla]" 'entre los corchetas escribes el nombre de la tabal
.Execute
End With
Set DropTabla = Nothing
End Sub

Muchas gracias por la respuesta, copié el código pero me marca el segundo renglón, DropTabla As ADODB.Command, y me dice error de compilación: no se ha definido el tipo definido por el usuario, tenés idea qué puede ser?

Muchas gracias nuevamente,

saludos!

Tienes que tener la referencia activada Microsoft Activex Data Object Library cualquier versión, eso lo encuentras en el menú herramientas > referencias, de la ventana del código

Buenísimo! ahí lo activé y me funcionó, muchas gracias!. Te hago una última consulta, cuando lo pongo para una sola tabla, me funciona, es decir que una vez que cierro el access se borra, pero copie el código 4 veces más para que suceda con todas tablas y en ese caso, ya no me funciona más, no me salta error ni nada, pero no se borran las tablas al cerrar el access.

muchas gracias de nuevo!

Al copiar el código 4 veces tienes que cambiar el nombre del procedimiento, por ejemplo:

Sub eleminarTablas()'Aquí debes de cambiar el nombre del procedimiento
Dim DropTabla As ADODB.Command
Set DropTabla = New ADODB.Command
With DropTabla
.ActiveConnection = CurrentProject.Connection
.CommandText = "Drop table [Nombre de la tabla]" 'entre los corchetas escribes el nombre de la tabal
.Execute
End With
Set DropTabla = Nothing
End Sub

Sub eleminarTablas2()'aquí cambie el nombre
Dim DropTabla As ADODB.Command
Set DropTabla = New ADODB.Command
With DropTabla
.ActiveConnection = CurrentProject.Connection
.CommandText = "Drop table [Nombre de la tabla]" 'entre los corchetas escribes el nombre de la tabal
.Execute
End With
Set DropTabla = Nothing
End Sub

blog: https://todoaccessvba.wordpress.com

No es eso porque ya lo había modificado....ahora no me funciona más....si lo ejecuto elimina las tablas, pero no las elimina al cerrar el access, faltará alguna parte para que se haga automáticamente?

Perdón la gran cantidad de preguntas!

Primero lo puse al final de la macro autoexe, dps probé poniéndolo en un módulo aparte

No, no tengo formularios en el access, solo son estas tablas. Me conviene crear un formulario?

El código en que parte lo estas poniendo.

Tienes un formulario abierto cuando cierras el access, porque lo podrías poner el evento a descargar, o al cerrar el form

Sí, el tema es que es una base de datos creada para otras personas...

bueno veo cómo lo soluciono,

muchas gracias!!!

Solo preguntaba, entonces lo puedes ejecutar manualmente o al abrir el access antes de que hagas otros procesos puedes hacer este primero de eliminar las tablas después aplicas los demas

Ok cualquier cosa estoy para ayudar, por favor si no tienes mas comentarios, finaliza la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas