¿Cómo se descompila y recompila una aplicación de base de datos?

Resuelto Alex Gordon asked hace 14 años • 6 respuestas

Tengo una aplicación de base de datos Access y me gustaría saber la forma correcta de descompilarla y recompilarla.

Alex Gordon avatar Jul 16 '10 22:07 Alex Gordon
Aceptado

Para descompilar una base de datos de Access necesitarás crear un acceso directo con los siguientes elementos:

  1. Ruta al ejecutable de MS Access (MSACESS.exe)
  2. Ruta a la base de datos que desea descompilar
  3. El indicador /descompilar

En conjunto, entonces, el acceso directo se vería así:

"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "C:\users\tim\documents\Mydatabase.mdb" /decompile

Obviamente, las rutas serán diferentes en su sistema.

Recomiendo hacer una copia de seguridad de su base de datos antes de ejecutar este comando.

Si tiene algún código de inicio en su base de datos, debe mantener presionada la tecla Mayús para omitir la ejecución del código de inicio.

Una vez que se abre la base de datos, puede compactarla y repararla para garantizar un rendimiento óptimo.

Después de compactar y reparar, puede volver a compilar el código VBA abriendo cualquier módulo y usando el Debug Compile [DatabaseName]comando.

Si esto es algo que desea hacer con frecuencia, puede crear un acceso directo de "Acceso a descompilación" en su menú Enviar a. Una vez que tenga este acceso directo en el menú Enviar a, podrá hacer clic derecho en cualquier base de datos de Access y seleccionar "Enviar a --> Descompilar Access", lo cual es mucho más fácil que tener que crear un acceso directo a la base de datos específica.

Siga estos pasos para personalizar el menú Enviar a con un acceso directo a Access Decompile

  1. Cree un acceso directo al ejecutable de Access.

  2. Agregue el indicador /decompile en el destino para el acceso directo. El atajo se verá así:

    "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" /decompile

  3. Abra el Explorador de Windows y pegue lo siguiente en la barra de direcciones:

    %APPDATA%\Microsoft\Windows\SendTo

  4. Copie el acceso directo que creó en la carpeta EnviarA.

  5. El acceso directo de Access Decompile ahora estará disponible para su uso.

Para invocar el acceso directo de Access Decompile, haga clic derecho en una base de datos de Access en el Explorador de Windows y seleccione "Enviar a --> Access Decompile". Asegúrese de mantener presionada la tecla Mayús para omitir cualquier código de inicio en la base de datos.

Tim Lentine avatar Jul 16 '2010 16:07 Tim Lentine

Las instrucciones prácticas de @Tim Lentine son buenas, pero omite los pasos reales necesarios para que valga la pena realizar una descompilación:

  1. haga una copia de seguridad de su base de datos.

  2. compacta tu base de datos.

  3. Usando el acceso directo creado con las instrucciones de Tim, abra su base de datos.

  4. cierre esa instancia de Access.

  5. abra una nueva instancia de Access y abra la base de datos que acaba de descompilar, pero ASEGÚRESE DE OMITIR TODO EL CÓDIGO DE INICIO (es decir, mantenga presionada la tecla Mayús). Si no lo hace, entonces puede volver al paso 3 e intentarlo nuevamente, ya que si se ejecuta el código de inicio, su código se volverá a compilar antes de que esté listo para hacerlo.

  6. compacte la base de datos descompilada (y asegúrese de mantener presionada la tecla Mayús para que omita el código de inicio; consulte el n.° 5).

  7. Abra VBE y en el menú Depurar, elija COMPILAR [nombre del proyecto].

  8. en el menú archivo, guarde el proyecto.

  9. compacto de nuevo.

¿Por qué son necesarios todos estos pasos?

Debido a que no solo desea descompilar VBA, desea asegurarse de que todas las páginas de datos donde se almacenó el código p compilado se descarten por completo antes de volver a compilar.

También recomiendo:

  1. en las opciones de VBE, desactive COMPILAR A DEMANDA

  2. en VBE, agregue el botón COMPILAR a su barra de herramientas.

  3. compila frecuentemente con ese botón en la barra de herramientas, después de cada dos o tres líneas de código.

La descompilación no es algo que debas usar todo el tiempo, pero durante la codificación intensa, podría descompilarla un par de veces al día. Y generalmente descompilo/recompilo como último paso antes de lanzar una aplicación para uso en producción.

Por último, lea el artículo de Michael Kaplan sobre el tema para comprenderlo mejor.

David-W-Fenton avatar Jul 16 '2010 19:07 David-W-Fenton

La respuesta aceptada es excelente, pero resulta poco práctico crear un acceso directo para cada base de datos.

Puede guardar esto como un módulo de PowerShell.

#for use with MSAccess 2010

Function Decompile-AccessDB{
    param ([string]$dbFileName)

    [string]$argument = '"' + $dbFileName + '"' + "/Decompile"
    Start-Process -FilePath 'C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE' -ArgumentList $argument
}

Entonces llámalo así:

Decompile-AccessDB -Path "C:\Path\to\some.accdb"

Esto le permite descompilar rápida y fácilmente cualquier base de datos desde la línea de comandos de Power Shell.

Tenga en cuenta que aún deberá mantener presionada la tecla Shift cuando ejecute esto para evitar el inicio de la aplicación.

RubberDuck avatar Feb 28 '2014 18:02 RubberDuck

Las otras respuestas aquí parecen un poco complejas para mi gusto.

Para descompilar una base de datos de Access:

Abra el cuadro de diálogo Ejecutar desde el menú de inicio o presione Win+R

Escriba: MSACCESS.EXE /decompile(una instalación adecuada debería abrir la aplicación Access; también puede proporcionar la ruta completa a MSACCESS.EXE) y presione Aceptar.

Se abre el acceso. Abra su base de datos en la ventana de Access que acaba de abrirse. Eso lo descompilará.

Erik A avatar Mar 10 '2018 21:03 Erik A

Escribí un script VBS para automatizar el proceso de descompilación. Es una tontería que Microsoft no haya integrado esto en Access, considerando que es una necesidad al desarrollar aplicaciones con mucho VBA.

El script ubica MSACCESS.exe y ejecuta Access con el indicador de descompilación en una base de datos ubicada en el directorio principal del script, cuyo nombre se proporciona en el código.

Option Explicit
Dim MSAccPath
Dim RegKey
Dim WSHShell
Dim currentDirectory

' Get MSACCESS.exe directory
RegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\" _
    & "CurrentVersion\App Paths\MSACCESS.EXE\Path"
Set WSHShell = WScript.CreateObject("WScript.Shell")

' Get parent directory
MSAccPath = WSHShell.RegRead(RegKey)
currentDirectory = WSHShell.CurrentDirectory

' Decompile
WSHShell.Run Chr(34) & MSAccPath & "MSACCESS.EXE" & Chr(34) & " " & Chr(34) & currentDirectory & "\..\testdb.accdb" & Chr(34) & " /decompile"

' Clear shell var
Set WSHShell = Nothing

Simplemente pegue este texto en un documento con una .vbsextensión y haga doble clic en él para ejecutarlo. Access se iniciará, descompilará el código P compilado (código "empaquetado") y automáticamente recompilará la fuente VBA nuevamente en código P.

StockB avatar Dec 18 '2013 19:12 StockB