Decompile: Cómo reducir el tamaño de las bases de datos Microsoft Access
Para que el código de cualquier programa pueda ser interpretado por el ordenador debe ser convertido a un formato legible por la máquina (código compilado), frente al formato legible por los humanos (código fuente). Así pues, en Access, cuando el código es ejecutado por primera vez (entiéndase, después de hacer modificaciones en el fichero) es necesaria su compilación para poder ser interpretado por la máquina. Esta compilación también se puede hacer manualmente, a petición, desde el editor de Visual Basic.
Tal y como yo lo entiendo [por intuición más que nada :-)], Access realiza esta compilación de forma distinta a como se hace en otras aplicaciones, ya que, a diferencia de otros programas, la compilación no genera un fichero independiente. No sé si es esto el origen, pero, sea por lo que sea, en Access nos encontramos con un problema que no se ve en otras aplicaciones: en el código compilado (el código objeto, el que interpreta la máquina) no se eliminan las partes que sí eliminamos del código fuente sino que, simplemente, con cada nueva compilación, se va añadiendo más código, aunque resulte inútil y nunca más volvamos a verlo en el código fuente.
Esto, en ocasiones, puede provocar conflictos que se manifiestan en errores inexplicables y en un crecimiento desproporcionado del tamaño del fichero. Para eliminar este código inútil, puedes usar Decompile como parámetro de la línea de comandos.
Decompile es una característica no documentada (al menos, no documentada oficialmente por Microsoft) con la que podrás reparar bases de datos dañadas (y que no se consiguen reparar con la utilidad de reparación, esta sí, documentada por la casa de Redmond), además de reducir su tamaño de forma apreciable.
Paso a paso
Para utilizar esta característica debes seguir los siguientes pasos:
- Hacer copia de la base de datos que deseas decompilar. El hecho de que no esté documentada la funcionalidad hace pensar que no es segura. Por otra parte, fundamentalmente, se va a eliminar información del fichero y, aunque se supone que la información que se elimina es la que está sobrando, es posible que, por las razones que sea, pueda surgir algún problema con la funcionalidad: Es mejor ser cautos.
- Opcionalmente puedes abrir Microsoft Access y compactar la base de datos. Esto reducirá el tamaño a lo máximo que, de forma «normal», puedes reducir el fichero y, consecuentemente, te permitirá también comprobar hasta qué punto se puede todavía reducir bastante más.
- Abrir Microsoft Access con el parámetro Decompile. Para ello, puedes crear un acceso directo (útil pensando en usarlo con cierta frecuencia) o simplemente, desde el menú Inicio de Windows, ejecutar el siguiente comando: "C:\Archivos de Programa\Microsoft Office\Office\Msaccess.exe" /decompile (la parte entrecomillada puede variar dependiendo de cuál sea la ruta donde tienes instalado Access en tu ordenador). Esto abrirá Access en modo «decompilador».
- Abrir la base de datos que queremos decompilar. Asegúrate de mantener presionada la tecla Shift (mayúsculas) para que no se ejecute la macro Autoexec, en caso de que la tengas. Con esta simple acción habremos decompilado la base de datos.
- Compacta la base de datos (nuevamente asegúrate de mantener presionada la tecla Shift) y cierra Access.
- Ábre nuevamente la base de datos con el modo «normal» de Access (sin el parámetro «Decompile»).
- Abre el editor de Visual Basic (Alt+F11) y compila el proyecto.
- Guárdalo.
- Cierra el editor de Visual Basic y compacta la base de datos.
Los pasos tres y cuatro puedes hacerlos en uno sólo ejecutando el siguiente comando: "C:\Archivos de Programa\Microsoft Office\Office\Msaccess.exe" "d:\Mis Documentos\access\mibasededatos.mdb" /decompile. Ya ves por qué interpretando el comando, ¿verdad?
Más info
www.trigeminal.com/usenet/usenet004.asp
www.devhut.net/2012/04/16/ms-access-decompile-a-database (en inglés)
www.granite.ab.ca/access/decompile.htm (en inglés)
datagnostics.com/dtips/decompile.html (en inglés)
sourcedaddy.com/ms-access/using-the-decompile-option.html (en inglés)
https://www.groupacg.com/ACodeTip.htm#DECOMP (en inglés).
https://www.fmsinc.com/microsoftaccess/errors/Bad_DLL_Calling_Convention.asp (en inglés).