{"id":1230,"date":"2013-02-03T22:33:02","date_gmt":"2013-02-03T21:33:02","guid":{"rendered":"https:\/\/david.xn--cantn-3ta.com\/blog\/?p=1230"},"modified":"2018-03-11T10:41:44","modified_gmt":"2018-03-11T09:41:44","slug":"decompile-como-reducir-el-tamano-de-las-bases-de-datos-microsoft-access","status":"publish","type":"post","link":"https:\/\/david.xn--cantn-3ta.com\/blog\/informatica\/decompile-como-reducir-el-tamano-de-las-bases-de-datos-microsoft-access\/1230\/","title":{"rendered":"Decompile: C\u00f3mo reducir el tama\u00f1o de las bases de datos Microsoft Access"},"content":{"rendered":"<p>Para que el c\u00f3digo de cualquier programa pueda ser interpretado por el ordenador debe ser convertido a un formato legible por la m\u00e1quina (<strong>c\u00f3digo compilado<\/strong>), frente al formato legible por los humanos (<strong>c\u00f3digo fuente<\/strong>). As\u00ed pues, en <strong>Access<\/strong>, cuando el c\u00f3digo es ejecutado por primera vez (enti\u00e9ndase, despu\u00e9s de hacer modificaciones en el fichero) es necesaria su compilaci\u00f3n para poder ser interpretado por la m\u00e1quina. Esta compilaci\u00f3n tambi\u00e9n se puede hacer manualmente, a petici\u00f3n, desde el <strong>editor de Visual Basic<\/strong>.<\/p>\n<p>Tal y como yo lo entiendo [por intuici\u00f3n m\u00e1s que nada :-)], <strong>Access<\/strong> realiza esta compilaci\u00f3n de forma distinta a como se hace en otras aplicaciones, ya que, a diferencia de otros programas, la compilaci\u00f3n no genera un fichero independiente. No s\u00e9 si es esto el origen, pero, sea por lo que sea, en <strong>Access<\/strong> nos encontramos con un problema que no se ve en otras aplicaciones: en el c\u00f3digo compilado (el c\u00f3digo objeto, el que interpreta la m\u00e1quina) <strong>no se eliminan las partes que s\u00ed eliminamos del c\u00f3digo fuente<\/strong> sino que, simplemente, con cada nueva compilaci\u00f3n, se va a\u00f1adiendo m\u00e1s c\u00f3digo, aunque resulte in\u00fatil y nunca m\u00e1s volvamos a verlo en el c\u00f3digo fuente. <\/p>\n<p>Esto, en ocasiones, puede provocar conflictos que se manifiestan en <strong>errores inexplicables<\/strong> y en un <strong>crecimiento desproporcionado del tama\u00f1o del fichero<\/strong>. Para eliminar este c\u00f3digo in\u00fatil, puedes usar <strong>Decompile<\/strong> como <strong>par\u00e1metro<\/strong> de la <strong>l\u00ednea de comandos<\/strong>. <\/p>\n<p><!--more--><strong>Decompile es una caracter\u00edstica no documentada<\/strong> (al menos, no documentada oficialmente por Microsoft) con la que podr\u00e1s <strong>reparar bases de datos da\u00f1adas<\/strong> (y que no se consiguen reparar con la utilidad de reparaci\u00f3n, esta s\u00ed, documentada por la casa de Redmond), adem\u00e1s de <strong>reducir su tama\u00f1o<\/strong> de forma apreciable. <\/p>\n<h3>Paso a paso<\/h3>\n<p>Para utilizar esta caracter\u00edstica debes seguir los siguientes <strong>pasos<\/strong>:<\/p>\n<ol>\n<li><strong>Hacer copia de la base de datos que deseas decompilar<\/strong>. El hecho de que no est\u00e9 documentada la funcionalidad hace pensar que <strong>no es segura<\/strong>. Por otra parte, fundamentalmente, se va a <strong>eliminar informaci\u00f3n del fichero<\/strong> y, aunque se supone que la informaci\u00f3n que se elimina es la que est\u00e1 sobrando, es posible que, por las razones que sea, pueda surgir alg\u00fan problema con la funcionalidad: Es mejor ser cautos.<\/li>\n<li>Opcionalmente puedes abrir Microsoft Access y <strong>compactar la base de datos<\/strong>. Esto reducir\u00e1 el tama\u00f1o a lo m\u00e1ximo que, de forma \u00abnormal\u00bb, puedes reducir el fichero y, consecuentemente, te permitir\u00e1 tambi\u00e9n comprobar hasta qu\u00e9 punto se puede todav\u00eda reducir bastante m\u00e1s.<\/li>\n<li><strong>Abrir Microsoft Access con el par\u00e1metro Decompile<\/strong>. Para ello, puedes crear un acceso directo (\u00fatil pensando en usarlo con cierta frecuencia) o simplemente, desde el <strong>men\u00fa Inicio de Windows<\/strong>, ejecutar el siguiente <strong>comando<\/strong>: <span class=\"inline-code\">&quot;C:\\Archivos de Programa\\Microsoft Office\\Office\\Msaccess.exe&quot; \/decompile<\/span> (la parte entrecomillada puede variar dependiendo de cu\u00e1l sea la ruta donde tienes instalado Access en tu ordenador). Esto <strong>abrir\u00e1 Access en modo \u00abdecompilador\u00bb<\/strong>.<\/li>\n<li><strong>Abrir la base de datos que queremos decompilar<\/strong>. Aseg\u00farate de mantener presionada la tecla Shift (may\u00fasculas) para que no se ejecute la macro Autoexec, en caso de que la tengas. Con esta simple acci\u00f3n habremos <strong>decompilado la base de datos<\/strong>.<\/li>\n<li><strong>Compacta la base de datos<\/strong> (nuevamente aseg\u00farate de mantener presionada la tecla Shift) y cierra <strong>Access<\/strong>.<\/li>\n<li>\u00c1bre nuevamente la base de datos con el <strong>modo \u00abnormal\u00bb de Access<\/strong> (sin el par\u00e1metro \u00abDecompile\u00bb).<\/li>\n<li>Abre el <strong>editor de Visual Basic<\/strong> (Alt+F11) y <strong>compila<\/strong> el proyecto.<\/li>\n<li>Gu\u00e1rdalo.<\/li>\n<li>Cierra el editor de Visual Basic y <strong>compacta la base de datos<\/strong>.<\/li>\n<\/ol>\n<p>Los pasos tres y cuatro puedes hacerlos en uno s\u00f3lo ejecutando el siguiente comando: <span class=\"inline-code\">&quot;C:\\Archivos de Programa\\Microsoft Office\\Office\\Msaccess.exe&quot; &quot;d:\\Mis Documentos\\access\\mibasededatos.mdb&quot; \/decompile<\/span>. Ya ves por qu\u00e9 interpretando el comando, \u00bfverdad?<\/p>\n<h3>M\u00e1s info<\/h3>\n<p><a href=\"https:\/\/www.trigeminal.com\/usenet\/usenet004.asp\" rel=\"noopener\" target=\"_blank\">www.trigeminal.com\/usenet\/usenet004.asp<\/a><br \/>\n<a href=\"https:\/\/www.devhut.net\/2012\/04\/16\/ms-access-decompile-a-database\/\" rel=\"noopener\" target=\"_blank\">www.devhut.net\/2012\/04\/16\/ms-access-decompile-a-database<\/a> (en ingl\u00e9s)<br \/>\n<a href=\"https:\/\/www.granite.ab.ca\/access\/decompile.htm\" rel=\"noopener\" target=\"_blank\">www.granite.ab.ca\/access\/decompile.htm<\/a> (en ingl\u00e9s)<br \/>\n<a href=\"https:\/\/datagnostics.com\/dtips\/decompile.html\" rel=\"noopener\" target=\"_blank\">datagnostics.com\/dtips\/decompile.html<\/a> (en ingl\u00e9s)<br \/>\n<a href=\"https:\/\/sourcedaddy.com\/ms-access\/using-the-decompile-option.html\" rel=\"noopener\" target=\"_blank\">sourcedaddy.com\/ms-access\/using-the-decompile-option.html<\/a> (en ingl\u00e9s)<br \/>\n<a href=\"https:\/\/www.groupacg.com\/ACodeTip.htm#DECOMP\" rel=\"noopener\" target=\"_blank\">https:\/\/www.groupacg.com\/ACodeTip.htm#DECOMP<\/a> (en ingl\u00e9s).<br \/>\n<a href=\"https:\/\/www.fmsinc.com\/microsoftaccess\/errors\/Bad_DLL_Calling_Convention.asp\" rel=\"noopener\" target=\"_blank\">https:\/\/www.fmsinc.com\/microsoftaccess\/errors\/Bad_DLL_Calling_Convention.asp<\/a> (en ingl\u00e9s).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para que el c\u00f3digo de cualquier programa pueda ser interpretado por el ordenador debe ser convertido a un formato legible por la m\u00e1quina (c\u00f3digo compilado), frente al formato legible por los humanos (c\u00f3digo fuente). As\u00ed pues, en Access, cuando el c\u00f3digo es ejecutado por primera vez (enti\u00e9ndase, despu\u00e9s de hacer modificaciones en el fichero) es [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[88,87,66],"class_list":["post-1230","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-bases-de-datos","tag-microsoft-access","tag-microsoft-office"],"_links":{"self":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/posts\/1230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/comments?post=1230"}],"version-history":[{"count":2,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/posts\/1230\/revisions"}],"predecessor-version":[{"id":1447,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/posts\/1230\/revisions\/1447"}],"wp:attachment":[{"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/media?parent=1230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/categories?post=1230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/david.xn--cantn-3ta.com\/blog\/wp-json\/wp\/v2\/tags?post=1230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}