我在Access中有一個奇怪的情況。通常,Null錯誤的無效使用是一件非常簡單的事情 - 爲一個字符串變量或其他類型賦值null。但是我在一個看起來不應該發生的地方出現錯誤。以下是代碼片段:MsAccess中的DoEvents語句中的「空使用空值」錯誤
bch = Form_Akces.txtMaxCisla.BackColor
If Err <> 0 Then Stop
Form_Akces.txtMaxCisla.BackColor = vbYellow
If Err <> 0 Then Stop
DoEvents
If Err <> 0 Then Stop ' This is where I get the error
With qdf_GPsp
什麼是怎麼發生的事情是,我得到這個錯誤只是有時,通常只在我第一次在一段時間運行代碼。如果我關閉數據庫並立即重新打開它,通常我不會得到錯誤。這讓我瘋狂了很長一段時間,所以我把所有這些「如果錯誤<> 0然後停止」語句,試圖追蹤它發生的地方。這是一個實時系統,用戶知道只需重新啓動應用程序,但這是一個龐大的PIA,並且引導很尷尬。
任何人都可以想到一些事情來嘗試或檢查?我不完全是Access中的業餘愛好者,但這遠遠超出我曾經遇到過的任何事情。爲什麼DoEvents語句應該會產生這樣的錯誤超出了我的想象,特別是因爲即使在前面的語句中,我也沒有做任何事情,應該會產生這樣的錯誤,直到處理器有機會拋出錯誤。如果我拿出DoEvents,我只會在相同的線下得到相同的錯誤。 txtMaxCisla是Form_Akces表單上的一個未綁定的文本字段,包含此代碼的例程將從其中調用。只有在啓動時 - 一旦一切都被加載並運行,這再也不會發生。它只發生一次 - 沒有模式,我已經能夠檢測到。
通過大量的編譯,反編譯,重新編譯,壓縮和修復循環,它已經持續了幾個月,沒有明顯的變化,除了有時會發生在其他地方,再次沒有理由我可以看到。
- 更新*
沒有運氣 - 它仍然崩潰,並絕對沒有理由,我可以看到。下面的代碼現在:
Public Sub ReloadMaxNumbers(tmc As TextBox)
Dim rst As DAO.Recordset, x$, xb$, xe$, bch&
On Error GoTo 0
If Err <> 0 Then Stop
DoEvents
If Err <> 0 Then Stop
...
代碼停在第二次測試中,後的DoEvents,用同樣的錯誤,「無效的使用Null」。我意識到這個代碼是完全延遲的,但它是追溯的結果,試圖找到錯誤的根源。沒有這個,它就會在某個地方進一步崩潰,同樣的錯誤。在這一點上,我想不出別的什麼來嘗試。
我有同樣的問題,如果我找到解決方案,我會給你反饋。 – celerno 2013-08-10 01:38:19