Repara Access
HomeRepara AccessEsta página

Cómo recuperar objetos borrados en Ms Access

David Cimadevilla

22/4/2019

Cómo recuperar tablas, formularios y otros objetos borrados de bases de datos de Microsoft Access.

Cuando se elimina un formulario u otro objeto de una base de datos, internamente, Microsoft Access borra la entrada correspondiente del índice de objetos de la base de datos y marca el espacio que ocupaban sus datos como disponible.

Al eliminar un objeto, sus datos no se eliminan directamente, ni tampoco se recupera el espacio que ocupaban en el archivo accdb o mdb.

Estas zonas del archivo sin usar se reaprovecharán más adelante cuando se necesite espacio libre para almacenar nuevos datos, como por ejemplo un nuevo formulario o nuevos registros de una tabla.

El espacio liberado al borrar objetos sólo se recuperará después de aplicar Compactar y reparar, lo que reescribirá la base de datos de principio a fin, eliminando los "huecos" sin utilizar.

Los objetos borrados son frágiles

Es importante hacer una copia de seguridad lo antes posible para no perder opciones de recuperación.

Los objetos borrados residen en zonas del archivo accdb o mdb, marcadas como disponibles. Si nuevos datos las rellenaran, nuestros objetos serían destruidos.

Ejemplo de recuperación

Ejemplo con un archivo accdb real de cómo recuperar objetos borrados
Representación en 3D de ventana de confirmación de borrado en Microsoft Access

Ventana de confirmación de Access antes de borrar.

Para ilustrar el procedimiento de recuperación vamos a borrar todos los objetos de una base de datos que contiene tablas, formularios, informes y Visual Basic.

Después vamos a recuperarlos con AccessFIX.

  1. Borramos todo

    Seleccionamos todo y borramos tablas, formularios, informes y módulos de Visual Basic de una base de datos de Access.

  2. La base de datos está vacía

    La base de datos queda totalmente vacía. Sin embargo, internamente, muchos de los objetos siguen ahí en forma de objetos huérfanos.

    Los objetos borrados seguirán en el archivo mientras que no añadamos nuevos datos o compactemos el archivo.

  3. Recuperamos los datos con AccessFIX

    AccessFIX recupera en este ejemplo 20/20 tablas, 30/33 formularios, 13/15 informes y 9/17 módulos de Visual Basic.

    La cantidad de objetos recuperables es variable y depende de muchos factores, entre otros, de las modificaciones hechas en la base de datos después de borrar.

  4. Tablas borradas y recuperadas

    En el ejemplo, se recuperan todos los registros de todas las tablas. El resultado es tan bueno porque no se modificó la base de datos después de borrar. Si se hubiera continuado usando la base de datos, poco a poco habrían ido desapareciendo registros.

    El nombre de la tabla se perderá siempre, cuando se trata de borrados: en el pantallazo, la tabla Tabla recuperada se corresponde con las tabla original Customers.

  5. Formularios e informes borrados y recuperados

    Los nombres también se pierden para formularios e informes: en el ejemplo Recovered form se corresponde con el formulario original Employee Details.

  6. Módulos y Visual Basic borrado y recuperado

    La recuperacion de Visual Basic, es este ejemplo, no es tan exitosa como con los otros objetos. En el ejemplo se han podido recuperar 2/6 módulos y el VBA de 4/6 formularios y 3/3 informes. Y eso a pesar de no haber hecho ninguna operación en la base de datos después del borrado.

    Es posible que que los módulos no recuperados se hayan perdido debido al procedimiento interno de borrado de Access. O quizá haya sido porque la base de datos estaba ya compactada y sin espacio libre para nuevos datos.

    Respecto a los nombres, en el caso de los módulos sí que es posible recuperarlos gracias a que el nombre se puede extraer de los propios datos del módulo.

Información adicional

Los objetos borrados son un caso particular de objetos huérfanos.

Para leer más sobre distintos tipos de daño en bases de datos de Access puedes consultar en Cómo reparé 28 bases de datos.

Es fácil ver si tu base de datos contiene objetos borrados desde la vista previa de AccessFIX.

Más sobre recuperación de datos en general en nuestro blog, Repara Access.