2012-06-27 106 views
3

A2007應用程序中的兩種窗體在OnOpen事件之後已停止觸發它們的事件OnLoad事件。這些事件一直在工作多年,我無法確定爲什麼OnLoad事件現在沒有運行。MS Access 2007窗體OnLoad事件未觸發

而是,單擊任何控件的窗體觸發OnLoad事件 - 包括窗口的關閉按鈕。

這些表單是未綁定的,其中的子表單由OnLoad事件中調用的公共函數進行過濾。還有很多其他形式,這些仍然可以正常工作。

我檢查了事件仍然鏈接到代碼通過單擊事件旁邊的屬性中的省略號([事件過程]),這使我正確的代碼。

已反編譯/重新編譯。檢查參考。導入到一個新的數據庫。

嘗試添加一個記錄源(SELECT anyField FROM anyTable LIMIT 1),其沒有工作,然後我發現了一個變通,加入Me.RecordSource = Me.RecordSource作爲的OnOpen最後一行事件 - 其中確實然後觸發OnLoad事件。

這是Access近20年來我第一次遇到這種情況,而且當Access'行爲不端'時我非常緊張,我真的很想找到問題所在。任何建議將是最受歡迎的!

+0

確實很奇怪。在互聯網上我可以找到這個問題的其他每一個例子都提到了這個事件的鏈接,但是你已經檢查過了。可能無法正常工作,但是您是否清除了事件鏈接,刪除了子定義(將其複製到其他位置),然後通過在On Load屬性中點擊省略號並粘貼定義來重新創建事件?另一個(雖然很可怕)的解決方法是將Load子項作爲Open子句的最後一行。 – nicholas

+0

也做了一個小巧的修復? – nicholas

+1

我想不出爲什麼會發生這種情況,但是從使用未綁定的表單開始,「Open」和「Load」事件之間沒有太大區別,我知道它並不能解決問題,但你不能將代碼移到「打開」事件中嗎? –

回答

1

我在開發窗體時遇到了同樣的問題,但是我在Open事件中沒有任何代碼,但是在打開窗體時我的Load事件代碼突然停止運行。

在Open事件中添加「Me.RecordSource = Me.RecordSource」代碼,然後解決了問題?

我知道這不是一個答案,但它證明Max的代碼不能在Open事件中掛起。

唯一的其他重要信息是,我正在兩臺PC上開發它,一個使用Access 2007,一個使用2010,但我不記得在將代碼移回Access 2007 PC後Load事件是否停止運行。