簡體   English   中英

MS-Access 報告 VBA 代碼何時運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM