【问题标题】:MS Access 2010 - MsgBox to Run Query & Delete Record Not WorkingMS Access 2010 - MsgBox 运行查询和删除记录不起作用
【发布时间】:2016-09-28 12:18:13
【问题描述】:

我在带有以下 VBA 的连续子窗体上有一个按钮 -

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 record?@@', 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

我现在收到错误消息 -

您输入的表达式包含无效语法

【问题讨论】:

  • 你有Err.Clear的地方应该有On Error GoTo del_Click_Err,否则你所有的代码都会忽略错误,这不是一个好主意。
  • 谢谢@Andre 见上面的编辑
  • 在调试时,On Error Goto 0 有时是最好的选择,它会停止代码并突出显示有问题的行。使用通用的On Error Goto Handler 不知道错误发生在哪里。

标签: ms-access vba ms-access-2010


【解决方案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 record?@@"", 276, ""Are you sure?"")")

当它只是 msgBox 代码本身而不是在扩展代码中时,单引号似乎有效。无论如何,我会再次注意这一点。

@Andre 你的评论帮助我调试了这个。我最初留下了“错误清除”,因为这是向导为删除按钮输入的内容。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多