2016-09-28 57 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