2012-02-09 192 views
7

我需要將Access數據宏從我的測試數據庫傳輸到我的生產數據庫。任何人都知道如何做到這一點?如何導出Access 2010數據宏

我知道將表從一個accdb轉移到另一個也會傳輸數據宏,但這不是我的選擇。我也知道我可以在生產accdb中手動重新創建它們,但是這讓我容易接受錯誤,並且需要比生成腳本的傳輸方案更長時間地關閉生產數據庫。

如果我只需要做這件事,那就不是什麼大不了的事情,但是我需要在開發項目過程中做很多次。

我試過將表格導出到xml,但數據宏不包括在內。

請注意,我在這裏詢問Access 2010 數據宏,而不是常規的Access宏。

回答

3

我在這裏沒有很好的答案。

但是,在過去,我經常製作一個表格變更的「日誌」,然後在現場簡單地使用它。

請注意,您可以剪切+粘貼宏代碼。代碼保存爲XML。

例如,此更新表之後觸發看起來像這樣在訪問:

enter image description here

如果你切出上述(CTRL-A,CTRL-CC),,那麼你可以粘貼到一個記事本。事實上,你甚至可以粘貼/在Visual Studio或任何XML編輯器打開它,你可以看到這一點:

enter image description here

所以,你可以剪切+粘貼出的宏。

如前所述,因此在過去,我經常保持一個「記錄」的變化。因此,如果我在現場工作,並修改了2個代碼模塊,4個表單和2個報表,那麼我有一點變化記錄。我會在這張紙上輸入什麼物體被改變了。

當我到達現場時,我快速瀏覽該表並知道要導入3-5個對象,並且這種導入只有幾分鐘的上限。

但是,使用表觸發器和存儲過程,您可以有更多,然後只有幾個要複製。

我要麼做兩件事情之一:

使用日誌理念和

一)取消發佈的開發版本,並帶來與我到你的工作現場。然後導入新表單,報告等。 對於觸發器代碼,可以在兩個應用程序之間剪切+粘貼。

b)當您對觸發器進行更改時,請將+粘貼到記事本文檔中並將它們放在目錄中。在現場時,只需拿起每個記事本,剪切+粘貼到生產中,然後將記事本項目移動或複製到「完成」文件夾中。

以上情況肯定不理想。然後再次在過去,我並不總是有代碼來編寫表格變更的腳本,並且使用一個小日誌工作得很好。

所以在過去,我經常只是寫下這樣和那樣的表格被修改,我必須添加這樣和那樣的列。

因此,如果您想要將xml的宏代碼剪切+粘貼到單獨的小文檔中,或者將開發切入+生產中,您真的可以選擇它。

我的確認爲,如果你在不同的地方工作,那麼我認爲最好取消發佈開發版本,並將它與你一起(我假設你知道/重申你可以製作未發佈的副本一個Web應用程序)。因此,表單,代碼模塊,宏的等可以被導入相當容易(你刪除表單等,只是從未發佈的副本導入)。

但是,對於表代碼?您必須一次將未發佈的副本剪切+粘貼到某個臨時區域,或者在應用程序之間剪切粘貼。

保存文本可能在這裏工作,但我還沒有時間來製作更好的解決方案。

編輯: 順便說一句,在上面我假設了一個Web服務數據庫,但建議仍然適用於非Web Access數據庫。

+0

感謝您的時間和所有細節Albert。 XML信息非常有用。另外Ctrl-C,Ctrl-V也能很好地工作。根據你的聲譽,我將此作爲福音的答案。再次感謝 – unrazzle 2012-02-09 11:23:58

6

你可能想嘗試一對無證VBA函數

導出:

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml" 

導入:

LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml" 
4

要上的Martijn Pieters的擴大/ LANIK的答案(感謝Martijn和Lanik),我需要在28個不同的表上創建幾乎相同的數據宏,每個表上都有一個AfterInsert,AfterUpdate,AfterDelete和命名數據宏。所以,我用SaveAsText命令

SaveAsText acTableDataMacro, 「表名」, 「C:\ PathToFile \ DataMacro.xml」

創建模板,然後使用該模板創建XML 28文件通過一個小vba代碼,替換表名,主鍵等。我還創建了28個LoadFromText命令。然後,我可以使用LoadFromText命令一次加載所有的宏,並具有可重複的過程。現在我已經完成了測試,可以通過這種方式快速更新生產數據庫,或者輕鬆地將相同的數據宏添加到其他表中。

所以其他人都知道,LoadFromText覆蓋了以前的任何宏,這是非常棒的,因爲我沒有在第一次嘗試時使用我的模板。

鑑於上述情況,下一步是讓您的'updater'數據庫應用程序使用DoCmd.TransferDatabase命令,將具有所有LoadFromText命令的函數/ sub的模塊傳輸到Data .accdb。它也應該傳遞一個宏來運行該函數/子。我試圖讓我的更新程序然後執行宏來加載數據宏,但Access安全阻止了這一點。因此,您可能需要讓您的用戶打開數據庫並啓用它,然後運行宏。如果我們可以直接編輯數據宏,這會更復雜,但確實提供瞭解決問題的解決方法。

+0

優秀的答案。使用'SaveAsText acTableDataMacro'代碼時遇到問題,[我在此處發佈了一個問題](http://stackoverflow.com/questions/31755802/can-i-use-access-vba-to - 確定-IF-A-表具有-A-數據宏)。 – 2015-07-31 22:02:52

0

我有同樣的問題,無法找到正確的宏以XML格式導出。然而,我能夠右鍵點擊我的查詢並以這種方式導出到xml,所以我知道這是可能的。

然而,我希望它從一個按鈕運行,我發現一個簡單的方法做到這一點,而無需編寫任何vba代碼。

您首先需要通過右鍵單擊表或查詢並選擇導出並選擇xml作爲文件類型來手動導出表或查詢。最後,您可以保存導出步驟,只需勾選該框即可保存步驟併爲導出步驟指定一個適當的名稱。完成此操作後,可以使用RunSavedImportExport操作通過宏運行導出步驟。只需選擇手動導出時創建的已保存導出的名稱。任務完成。希望這有助於他人。

+2

僅供參考:數據宏不包含在XML中 - 我只是在Access 2013上試過它。 – HarveyFrench 2015-09-25 07:55:20

0

右鍵單擊宏並選擇Export,然後選擇要接收宏的數據庫。

+0

我知道它適用於導航窗格中列出的常規宏,但是它也適用於數據宏,例如Before Change,插入後,...? (我不認爲它確實如此。) – 2016-11-18 23:21:33