2016-09-28 53 views
0

我有與下面VBA附加一個持續子窗體上按鈕 -的MS Access 2010 - MSGBOX運行查詢和刪除記錄不工作

Private Sub del_Click() 
On Error GoTo del_Click_Err 
Dim LResponse As Integer 

    On Error Resume Next 
    DoCmd.GoToControl Screen.PreviousControl.Name 
    Err.Clear 

    If (Not Form.NewRecord) Then 
     LResponse = Eval("MsgBox('You are about to delete a record.'" & _ 
        "'@If you click yes, you won't be able to undo this delete operation.' & Chr(13) & Chr(10) & " & _ 
        "'Are you sure you want to delete this [email protected]@', 276, 'Are you sure?')") 
     If LResponse = vbYes Then 
      DoCmd.SetWarnings False 
      DoCmd.OpenQuery "qry_DeleteSpecific" 
      DoCmd.RunCommand acCmdDeleteRecord 
      DoCmd.SetWarnings True 
     Else 
     End If 
    End If 

    If (Form.NewRecord And Not Form.Dirty) Then 
     Beep 
    End If 

    If (Form.NewRecord And Form.Dirty) Then 
     DoCmd.RunCommand acCmdUndo 
    End If 

    If (MacroError <> 0) Then 
     Beep 
     MsgBox MacroError.Description, vbOKOnly, "" 
    End If 

del_Click_Exit: 
    DoCmd.SetWarnings True 
    Exit Sub 

del_Click_Err: 
    MsgBox Error$ 
    Resume del_Click_Exit 

End Sub 

按鈕原是自動生成「刪除記錄」按鈕我已經修改它包括查詢激活以及我自己的msgBox。

「刪除」按鈕在修改前顯然工作正常。該查詢也按預期工作,我測試了一個單獨的表單上的按鈕,它只包含MsgBox代碼,這也起作用。

但是把它們放在一起已經失敗了。當我單擊按鈕時,我沒有收到MsgBox,也沒有刪除記錄或運行查詢。

DoCmd.GoToControl Screen.PreviousControl.Name 

雖然此行看起來已正確觸發。

有人可以解釋什麼可能會出錯嗎?

---編輯---

替換

Error Clear 

隨着

On Error GoTo del_Click_Err 

現在我得到錯誤信息 -

您輸入的表達式包含s無效語法

+1

如果你有'Err.Clear',你應該有'On Error GoTo del_Click_Err',否則你所有的代碼都會忽略錯誤,這不是一個好主意。 – Andre

+0

Thankyou @Andre上面編輯 – Jamsandwich

+0

調試時,'On Error Goto 0'有時是最好的選擇,它會停止代碼並突出顯示違規行。使用通用的'On Error Goto Handler',人們不知道錯誤發生在哪裏。 – Andre

回答

1

所以事實證明,這一切都在行情。引用問題對我來說仍然是一個謎,但我設法讓我的代碼工作。

這裏的變化 -

LResponse = Eval("MsgBox(""You are about to delete a record."" & " & _ 
      """@If you click yes, you won't be able to undo this delete operation."" & Chr(13) & Chr(10) & " & _ 
      """Are you sure you want to delete this [email protected]@"", 276, ""Are you sure?"")") 

單引號似乎工作時,這只是通過自身的MSGBOX代碼,但不是在擴展代碼。無論如何,我會知道再次注意這一點。

@你的評論幫助我調試了這一點。我最初留下'錯誤清除',因爲這是嚮導爲刪除按鈕所做的。

+0

在代碼中執行格式化MsgBox的更好的可讀實現,請參閱這裏:http://access.mvps.org/access/bugs/bugs0035.htm – Andre