2011-11-21 85 views
1

上週我在程序崩潰時修改了訪問2010數據庫中的兩個模塊的部分內容,並在每次嘗試打開數據庫時崩潰。我能夠創建一個新的數據庫並從損壞的表中導入表和查詢,但是當我試圖導入窗體/宏/模塊時,新的數據庫也會崩潰。我保持每日備份,但最終失去了幾個小時的工作。這發生在上週兩次,每次MS Access都會在沒有警告的情況下崩潰,並且VBA不可恢復。有沒有辦法從損壞的數據庫導出代碼?

該功能按預期工作,直到數據庫崩潰似乎在某個未知點。我的VBA代碼肯定會遇到某種問題,因爲這只是在我上週開始修改模塊時纔開始發生的,但是我無法找到它,因爲當沒有執行任何操作時崩潰實際發生了。即保存期間。

有誰知道是否可以將VBA導出而不導出到其他數據庫?即導出它,而不必使用MS Access來這樣做。在相關說明中,是否有人創建了一個將查詢定義,表格架構和所有VBA導出爲文本文件的庫,以便將它們放入源代碼管理中?

謝謝。

回答

5

除了@Remou建議的方法之外,您可以嘗試SaveAsText方法將代碼模塊保存到文本文件中。

Application.SaveAsText acModule, "Module1", "D:\Access\Module1.txt" 

但是,這並不能滿足您不使用Access的願望。

嘗試對您的項目包含已損壞的已保存編譯代碼的機會進行反編譯操作。你可以在這個堆棧溢出問題的2個答案中找到反編譯的詳細指令:ms-access: HOW TO decompile and recompile

反編譯之後,確保你所有的模塊在他們的聲明部分包含Option Explicit。檢查項目的參考,並修復任何已損壞(缺失)的項目。然後從VB編輯器的主菜單運行Debug-> Compile來驗證你的代碼編譯沒有錯誤。

這些步驟是我可以提供的最好的,以減少持續腐敗問題的可能性。

對於Access集成的源代碼控制,開始與這個選擇相關堆棧溢出的線程:site:stackoverflow.com ms-access version control

+0

我跟着你的第一個鏈接的步驟,舉行轉移旁路啓動代碼執行,然後做了一個編譯和數據庫修復。不知道是否它是反編譯標誌,或只是運行編譯/修復過程,但能夠恢復我的所有代碼。 – Jerry

+0

也將開始使用此腳本來獲取我的代碼轉儲存儲在源代碼管理.http:// stackoverflow。COM /問題/ 187506 /怎麼辦,您使用的版本控制,與接入發展 – Jerry

0

鄉親

我們有同樣的問題。 SP1中有一個錯誤導致它。如果你繼續打開數據庫,你最終會得到一個可以工作的備份 - 重命名舊的BROKEN並從新的數據庫中刪除_backup,並且直到你的下一步開發工作纔會開始。我們的IT人員(微軟金牌合作伙伴)正在尋求修復報告http://answers.microsoft.com/en-us/office/forum/office_2010-access/access-2010-sp1-you-receive-random-crashes-in/d2bf6175-075a-4a12-a2b1-f55d40af271b

我可能會去看看反編譯/重新編譯,但是因爲我們的一些數據庫已經從Access 97一直到2000年,2003年現在仍然是mdb/2003文件格式,在2010年運行。話雖如此,轉換到accdb/2007似乎更糟!