2016-10-14 27 views
0

在MS Access 2013的MS Access拼寫檢查對話框,我有幾個子表單的形式。其中一個子表單是一個RichText多行文本框。用戶可以單擊一個按鈕拼寫檢查文本框,並且,當單擊子窗體上的[保存]按鈕時,文本框也會自動拼寫檢查。取消與{} ESC鍵原因窗體更新錯誤#NAME

拼寫檢查工作正常。但是,如果用戶在拼寫檢查對話框出現時按下{ESCAPE}以關閉對話框,則不同子窗體中的數據不會得到正確更新,並顯示所有字段的#NAME。

但是,如果用戶按下【取消】按鈕或點擊該對話框的右上角關閉拼寫檢查對話框中的[X],子窗體被更新就好了。另外,如果我在調用拼寫檢查對話框的命令之後立即放置一個斷點,然後逐行通過代碼,即使按下了{ESC}鍵,子窗體也會更新得很好。

我嘗試拼寫檢查移動到表格的更新後事件,而不是[保存]按鈕的OnClick事件,但並沒有改變的問題。

有誰知道防止使用{ESC}來解除拼寫檢查對話框阻止其他子窗體正確更新的優雅方式嗎?

我已經發布了一個答案,以防它可以幫助別人,但是,我希望有人發佈/建議更優雅的解決方案,因爲我不特別喜歡我的解決方法。我會等待一段時間,然後將我的答案標記爲已接受,以便其他人可以發佈更好的答案!

回答

0

所以,這對我工作的馬虎解決方法是拼寫檢查命令後添加SendKeys "{RIGHT}", True如下:

'spell check the progress note 
If Me.[Note].Tag = "Locked" Then 
    MsgBox "Cannot spell check a locked note.", vbOKOnly + vbInformation, "Locked" 
Else 
    'If the Note contains data run the Spell Checker after data is entered. 
    If Len(Me.[Note] & "") > 0 Then 
     DoCmd.SetWarnings False 
     Me.[Note].SetFocus 'set focus to the control to spell check 
     With Me.[Note] 
      .SelStart = 0 
      .SelLength = Len(Me.[Note]) 
      DoCmd.RunCommand acCmdSpelling 
      SendKeys "{RIGHT}", True 
      .SelLength = 0 
     End With 
     DoCmd.SetWarnings True 
    End If 
End If 

我認爲這是草率和不應該是必要的,我不知道爲什麼它解決了問題。所以,如果別人提供更優雅的解決方案,我會喜歡它!

+0

一個星期後,有沒有其他的建議,因此,我將其標記爲答案。希望上面的答案能幫助別人。 如果有其他人有想法,請隨時發佈! – DRC