[英]When does MS-Access Report VBA Code run
我一直在尋找這個問題的簡單答案幾天:
當報表在預覽模式下打開並隱藏時,報表背后/中的 VBA 代碼是否運行?
我繼承了一個 POS(非銷售點)Access 2003 數據庫(主要用德語編寫),該數據庫附有一個非常長且復雜的 VBA 模塊的報告。 我需要在預覽模式下運行報告時執行代碼,但它不需要。
該報告是從具有以下行的表單中調用的:
DoCmd.OpenReport "Fertigungszettel",acPreview, , , acHidden
然后我用以下行關閉表單
DoCmd.Close acReport, "Fertigungszettel", acSaveNo
問題是報告中/后面/附加的代碼似乎沒有運行。 我想也許我需要延遲關閉以便 Access 有時間運行代碼,所以我在報告 vba 中添加了以下內容
Private Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)
Public SleepPls(ByVal ISecs As Long)
Sleep(ISecs * 1000)
End Sub
我添加了一行來這樣稱呼它:
SleepPls(10)
但這並沒有什么區別。
任何人都可以向我解釋這一點,或者指出我可以以簡單方式解釋這一點的地方。 我要求一個簡單的方法,因為我必須向非 Dev 的高層管理人員解釋這一點。 (差遠了)。
提前致謝。
在 MS Access 中,報表和其他對象具有一組屬性。 如果您進入報告的設計視圖並為整個報告選擇屬性,右側將出現一個列表。 頂部將是格式、數據、事件等。 在事件下,您將看到觸發代碼運行的“On...'s”列表。 如“On Current”、“On Load”、“On No Data”等。
VBA 代碼可以附加到其中一個或多個。 因此,也許您的代碼附加到諸如“On Mouse Up”之類的事件,因此如果您以編程方式打開報告,則不會運行。
找出代碼如何附加到事件上,這應該會引導您朝着正確的方向前進。 也許您可以將代碼附加到不同的事件,或者您的代碼可能直接調用您想要運行的代碼。
更新:您指出背后的代碼附加到“點擊”。 我認為這意味着背后的代碼看起來像
Private Sub Report_Click()
...
End Sub
所以我認為在你的代碼中你可以強制后面的現有代碼運行
DoCmd.OpenReport "Fertigungszettel",acPreview, , , acHidden
Call Forms("Your form name").Report_Click()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.