Repara Access
HomeRepara AccessEsta página

Cómo recuperar tablas de Ms Access que han perdido su definición

David Cimadevilla

30/5/2019

Las definiciones de una o varias tablas se pueden dañar o borrar como resultado de la corrupción de una base de datos de Microsoft Access. Como consecuencia, todos sus registros se perderán completamente. El único camino para recuperarlos pasará por crear una definición nueva o importar una compatible desde otra base de datos.

Cuando un archivo accdb o mdb se corrompe se vuelve difícil o imposible seguir trabajando con él. Los síntomas de que está dañado son variados, tales como objetos inaccesibles o desaparecidos, mensajes de error e incluso bases de datos que ni siquiera se pueden abrir.

Dependiendo del caso podremos solucionar el problema, usando Compactar y reparar, una herramienta de recuperación o con otros métodos como importar todo en una base de datos nueva.

Sin embargo, si el problema se debe a que se ha perdido la definición de una tabla, las opciones se reducen drásticamente.

La definición es la estructura de datos que contiene todas los detalles que se editan desde Diseño de tabla.

Cada tabla posee una definición con toda la información sobre sus campos con su nombre, tipo y atributos, y sus índices.

La pérdida de la definición de tablas también puede suponer un obstáculo en archivos de Access muy dañados, como por ejemplo archivos truncados, que requieren de una utilidad de recuperación de datos. La mayoría de las herramientas no serán capaces de recuperar ninguna información de aquellas tablas que hayan perdido su definición.

Cómo reconocer una tabla con la definición dañada

Una tabla se vuelve imposible de abrir cuando pierde su definición. Si intentamos abrirla o acceder a la vista Diseño de tabla Access devolverá este error:

Error de Microsoft Access: No se reconoce el formato de base de datos

Este mensaje de error no significa necesariamente que se haya perdido la definición de la tabla. Pero sí es cierto a la inversa: si perdemos la definición de la tabla veremos este error.

En Cómo reparé 28 bases de datos, examinamos varios archivos accdb que devuelven el error No se reconoce el formato de base de datos.

En el caso de archivos que no se puedan abrir y necesiten de una herramienta de recuperación de datos, reconoceremos este fallo porque con la mayoría de las utilidades la tabla aparecerá vacía o no aparecerá en los resultados.

Cómo es el error internamente

Voy a explicar someramente como se almacenan internamente las tablas y cuál es el problema en este tipo de casos.

Una tabla se guarda repartida en tres zonas diferenciadas del archivo accdb o mdb:

  1. Nombre. Se guarda dentro del índice de objetos, separado del resto de datos de la tabla.

  2. Definición. La definición contiene todos los detalles sobre la tabla y se corresponde con los datos que se editan cuando se abre la vista Diseño de tabla desde Access. Contiene los campos de la tabla con sus nombres y sus tipos. También guarda información sobre los índices de la tabla.

  3. Registros. Se almacenan a lo largo de todo el archivo de base de datos. Si se destruye una parte del archivo accdb o mdb, se perderán sólo los registros que estuvieran en esa parte pero el resto seguirán estando disponibles.

Si se daña el índice de objetos, podremos recuperar una tabla sin nombre. Si se dañan algunos registros, podremos recuperar el resto de ellos.

Sin embargo, si se pierde la definición, perderemos por completo la tabla, aunque todos los datos de los registros sigan estando "ahí". Esto es así, porque para poder interpretar cualquier fila de una tabla, se necesita obligatoriamente la definición para decodificar el bloque de datos del registro.

Actualmente, la única forma de recuperar estos datos que conozco es la herramienta AccessFIX con la que se pueden recuperarse parcial o totalmente todos los registros de la tabla. Más adelante hablaré de ello en detalle.

¿Y si reparamos con “Compactar y reparar”?

No lo hagas. Si lo haces y no tienes copia de seguridad perderás definitivamente las tablas afectadas. Compactar y reparar base de datos "resuelve" el problema eliminando por completo este tipo de tablas... sin previo aviso.

Para hacer las pruebas que voy a incluir a continuación he usado el archivo corrupt-customers-def.accdb del proyecto Cómo reparé 28 bases de datos.

Hagamos una prueba con un archivo que tiene dañada la definición de la tabla Customers. Fíjate en las pantallas que siguen y como la tabla desaparece después de aplicar Compactar y reparar.

  1. Antes

    La tabla Customers tiene la definición dañada. Si intentamos abrirla, nos sale el error.

  2. Después

    Después de aplicar Compactar y reparar la tabla no solo desaparece sino que además todos sus datos son definitivamente eliminados del archivo.

Recuperamos con AccessFIX

Vamos a recuperar el mismo archivo del ejemplo anterior con AccessFIX. Fíjate en los pantallazos a continuación.

  1. Así era la tabla antes de dañarse

    La tabla Customers se veía así en Access.

  2. Ahora ni siquiera se puede abrir

    Tras el fallo, cualquier intento de acceder a la tabla provoca el error.

  3. Recuperamos con AccessFIX

    Se recupera la tabla con sus 29 registros, pero nos muestra un triángulo de advertencia en la tabla para indicar que hay un problema.

    AccessFIX es capaz de generar una nueva definición aunque con limitaciones: 1. Los nombres de campo originales se pierden. 2. Sólo se recuperan los campos de texto.

    En la siguiente sección explico una posible solución a esto.

Mejoramos la recuperación

Se puede mejorar mucho el resultado si disponemos de una copia obsoleta de la base de datos. No importa que no tenga registros, o que sea de hace años, mientras contenga una definición idéntica de la misma tabla.

AccessFIX tiene una opción para usar la definición de un archivo externo. El número de registros recuperados será el mismo, pero con todos sus detalles.

Veamos como sería el proceso:

  1. Seleccionamos el archivo externo

    Desde AccessFIX, activamos la recuperación Avanzada y, seleccionamos el archivo dañado. Después, en la opción de sustitución de estructura, seleccionamos la copia antigua. La copia nos aportará la definición que nos falta.

  2. Recuperación mejorada

    Las cosas han mejorado mucho ahora. Ya no aparece el símbolo amarillo de advertencia, se recuperan los nombres de campo, y se recuperan todos los campos, incluidos los que no son de texto, como el campo ID.

  3. La tabla recuperada en Access

    Una vez guardado el archivo desde AccessFIX, tenemos la tabla recuperada al completo.

Conclusiones

Uno de los múltiples fallos que pueden afectar a una base de datos de Microsoft Access como resultado de la corrupción del archivo es la pérdida de la definición en algunas de sus tablas. Cuando una tabla pierde su definición se vuelve muy complicado recuperar los datos de sus registros.

La herramienta AccessFIX permite en estos casos recuperar directamente los campos de texto de todos los registros con las opciones por defecto. Adicionalmente, podremos recuperar por completo estas tablas si disponemos de una copia antigua de la base de datos, incluso si está vacía, aplicando la función de Sustitución de estructura de AccessFIX durante la recuperación.

Más información útil sobre recuperación de datos de Access en nuestro blog Repara Access.