Jak dekompilować i rekompilować aplikację bazodanową?

Mam aplikację bazodanową Access i chciałbym znać właściwy sposób jej dekompilacji i rekompilacji.

Author: StockB, 2010-07-16

6 answers

Zaakceptowana odpowiedź jest świetna, ale tworzenie skrótów dla każdej bazy danych jest trochę niepraktyczne.

Możesz zapisać to jako moduł 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
}

Więc nazwij to tak:

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

Pozwala to na szybką i łatwą dekompilację dowolne db z linii poleceń power shell.

Pamiętaj, że nadal musisz przytrzymać klawisz Shift podczas uruchamiania, aby ominąć uruchamianie aplikacji.

 7
Author: RubberDuck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:09:39

Aby Zdekompilować bazę danych Access, musisz utworzyć skrót zawierający następujące elementy:

  1. ścieżka do pliku wykonywalnego MS Access (MSACESS.exe)
  2. ścieżka do bazy danych, którą chcesz dekompilować
  3. flaga /decompile

Wszystkie razem, wtedy skrót będzie wyglądał mniej więcej tak:

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

Oczywiście ścieżki będą różne w Twoim systemie.

Polecam wykonanie kopii zapasowej bazy danych przed uruchomieniem tego dowództwo.

Jeśli masz jakikolwiek kod startowy w bazie danych, przytrzymaj klawisz shift, aby ominąć wykonanie kodu startowego.

Po otwarciu bazy danych można ją skompaktować i naprawić, aby zapewnić optymalną wydajność.

Po kompakcie i naprawie, możesz przekompilować kod VBA otwierając dowolny moduł i używając polecenia Debug Compile [DatabaseName].

Jeśli jest to coś, co chcesz robić często, możesz utworzyć skrót" Access Decompile " w menu SendTo. Gdy będziesz miał ten skrót w menu SendTo, będziesz mógł kliknąć prawym przyciskiem myszy dowolną bazę danych Access i wybrać "Wyślij do --> Access Dekompiluj", co jest znacznie łatwiejsze niż tworzenie skrótu do konkretnej bazy danych.

Wykonaj następujące kroki, aby dostosować menu Wyślij do za pomocą skrótu access Decompile

  1. Utwórz skrót do pliku wykonywalnego Access.
  2. Dołącza znacznik / decompile do celu skrótu. Skrót będzie wyglądał tak:

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

  3. Otwórz Eksploratora Windows i wklej do paska adresu:

    %APPDATA%\Microsoft\Windows\SendTo

  4. Skopiuj utworzony skrót do folderu SendTo.

  5. Skrót access Decompile będzie teraz dostępny do użycia.

Aby wywołać Skrót Access Decompile, kliknij prawym przyciskiem myszy bazę danych Access w Eksploratorze Windows i wybierz "Wyślij do --> Access Decompile". Pamiętaj, aby przytrzymać klawisz shift, aby ominąć każde uruchomienie kod w bazie danych.

 43
Author: Tim Lentine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-16 16:39:42

@ praktyczne instrukcje Tima Lentine są dobre, ale pomija rzeczywiste kroki wymagane do dekompilacji, aby były warte zrobienia:

  1. Kopia zapasowa bazy danych.

  2. Zwiększ swoją bazę danych.

  3. Używając skrótu stworzonego z instrukcjami Tima, otwórz swoją bazę danych.

  4. Zamknij tę instancję dostępu.

  5. Otwórz nową instancję Access i otwórz właśnie dekompilowaną bazę danych, ale pamiętaj, aby ominąć cały kod startowy (np. przytrzymaj klawisz shift). Jeśli tego nie zrobisz, możesz równie dobrze wrócić do kroku 3 i spróbować ponownie, ponieważ jeśli kod startowy zostanie uruchomiony, Twój kod zostanie przekompilowany, zanim będziesz gotowy do tego.

  6. Skompaktuj zdekompilowaną bazę danych (i upewnij się, że przytrzymasz klawisz shift, aby ominął kod startowy; patrz #5).

  7. Otwórz VBE i w menu debugowania wybierz Kompiluj [Nazwa projektu].

  8. W menu Plik Zapisz projekt.

  9. Znowu kompakt.

Dlaczego te wszystkie kroki są konieczne?

Ponieważ chcesz nie tylko dekompilować VBA, chcesz się upewnić, że wszystkie strony z danymi, na których przechowywany był skompilowany kod p, zostaną całkowicie odrzucone przed rekompilacją.

Polecam również:

  1. W opcjach VBE wyłącz kompilację na żądanie

  2. W VBE Dodaj przycisk kompilacji do paska narzędzi.

  3. Kompilować często z ten przycisk na pasku narzędzi, po co dwa lub trzy linijki kodu.

Dekompilacja nie jest czymś, czego powinieneś używać cały czas, ale podczas ciężkiego kodowania, mogę zrobić dekompilację kilka razy dziennie. I ogólnie dekompilować / przekompilować jako ostatni krok przed wydaniem aplikacji do użytku produkcyjnego.

Na koniec przeczytaj artykuł Michaela Kaplana na ten temat aby lepiej go zrozumieć.

 33
Author: David-W-Fenton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-16 19:25:35

Napisałem skrypt VBS, aby zautomatyzować proces dekompilacji. To głupie, że Microsoft nie zintegrował tego z Access, biorąc pod uwagę, że jest to konieczność przy opracowywaniu ciężkich aplikacji VBA.

Skrypt lokalizuje MSACCESS.exe i uruchamia Access z flagą decompile na bazie danych znajdującej się w katalogu nadrzędnym skryptu, którego nazwa jest podana w kodzie.

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

Po prostu wklej ten tekst do dokumentu z rozszerzeniem .vbs i kliknij go dwukrotnie, aby uruchomić. Dostęp będzie Uruchom, dekompiluj skompilowany kod P ("spakowany" kod) i automatycznie przekompiluj źródło VBA z powrotem do kodu p.

 4
Author: StockB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-31 16:07:23

Inne odpowiedzi wydają mi się trochę skomplikowane.

Dekompilacja bazy danych dostępu:

Otwórz Uruchom okno dialogowe z menu start lub naciśnij wygraj + R

Wpisz: MSACCESS.EXE /decompile (odpowiednia instalacja powinna otworzyć aplikację Access, możesz również podać pełną ścieżkę do MSACCESS.EXE) i naciśnij OK.

Otwiera się dostęp. Otwórz DB w oknie dostępu, które właśnie się otworzyło. To go zdekompiluje.

 3
Author: Erik von Asmuth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-10 21:54:08

Chciałem tylko dodać moje dwa centy. Codziennie pracuję z bazami danych SQL Server, SSIS i MS Access, a nasza sieć pozwala nam korzystać z różnych pulpitów Citrix; niektóre są Win Serv 2003 SP2, a niektóre są Win Serv 2008 R2. Przy kompaktowaniu i naprawie MS Access dbs na jednym pulpicie bazy danych są w porządku. Ale kiedy dekompilujesz, musisz upewnić się, że ktokolwiek inny używa dbs, będzie w stanie je otworzyć. Sprawdź wszystkie kontrolki, aby sprawdzić, czy działają tak samo od stacji roboczej do stacji roboczej. Będziesz występują problemy, gdy czyjaś instalacja MS Access nie zawiera tych samych bibliotek. To prowadzi nas do uniemożliwienia rozwoju front-endów z niekonwencjonalnymi sterowaniami, szczególnie tymi, które trzeba by dodać odniesienie do db, aby korzystać. Chociaż jest to świetny zasób, aby zmniejszyć rozmiar i przyspieszyć kod, dekompilacja może spowodować mnóstwo problemów w środowisku wielu użytkowników]}

 2
Author: Carlos Flores,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-05 18:54:48