【问题标题】:Button_Click event in Access VBA code doesn't open queries as expectedAccess VBA 代码中的 Button_Click 事件未按预期打开查询
【发布时间】:2017-07-06 04:30:09
【问题描述】:

我编写了以下 VBA 代码来执行表单的一些查询,该表单带有两个文本框和一个按钮来运行相应的查询。但是,当我执行单击事件时,什么都没有发生……无论输入如何,我的查询都不会打开,即使没有输入,错误 msgbox 也不会显示。我对 VBA 和一般编码仍然很陌生,所以我可能会遗漏一些明显的东西,但我看不到任何明显的问题。在按钮上单击 debug.print 确实打印,因此正在访问代码,它只是没有做任何事情。我想这与嵌套的 If 语句,特别是查询的打开有关,但尽管谷歌搜索了多个小时,我还是无法弄清楚。

这是按钮点击事件。

Private Sub RunQ_Click()

Dim Frm As Form
Dim MdlF As TextBox
Dim PartF As TextBox

Set Frm = Forms("SearchFormParts")
Set MdlF = Forms!SearchFormParts.Controls("ModelNoF")
Set PartF = Forms!SearchFormParts.Controls("PartNoF")
Debug.Print "this code is working2"
With Forms!SearchFormParts.Controls("RunQ")
    If .OnClick = "" Then
        If MdlF = vbNullString Then
            If PartF = vbNullString Then
                DoCmd.OpenQuery ("CCModel")
            Else
                DoCmd.OpenQuery ("CCBoth")
            End If
        ElseIf PartF = vbNullString Then
            If MdlF = vbNullString Then
                DoCmd.OpenQuery ("CCPart")
            Else
                DoCmd.OpenQuery ("CCBoth")
            End If
        Else: MsgBox ("Please enter a value in either or both fields!")
        End If
    End If
End With

End Sub

谢谢你:)

【问题讨论】:

  • 尽管谷歌搜索了多个小时,我还是无法弄清楚 - 但是 30 秒的 调试 会修复它。 F9 切换断点,F8 单步执行,Shift+F8 单步执行;然后你有 locals 工具窗口,immediate 窗格 (Ctrl+G)。在该With 指令上放置一个断点,运行它,然后按一次F8 进入If 语句。将鼠标悬停在.OnClick 标记上,你就会明白为什么下次按 F8 时执行会跳转到End If 并退出程序。

标签: ms-access vba


【解决方案1】:

If .OnClick = "" Then 结果为假。它设置为[Event Procedure]

这会导致您的任何查询代码都不会运行。 去掉,对应的End If

【讨论】:

  • 那个。同时删除 With 块,将指令分隔符冒号 Else: 替换为实际的换行符,并删除 OpenQueryMsgBox 调用中的所有这些冗余括号。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多