运行 组合框更新控件后的 AfterUpdate

Run AfterUpdate after a control is updated by combo box

我有一个名为 Product Master Data 的 table,其中包含 785 条记录。

我有一个基于这个 table 的表格,叫做 Production。此表单上的第一个文本控件称为 Protean Resource,它是对应于各个记录的标识符。

我将此控件设置为组合框,在其中选择资源编号后,表单上的其余文本控件会自动更新以显示所选记录的准确信息。

其中一个自动更新的控件称为 Quality Format

Quality Format 可以填充为:

这些值中的每一个都对应于不同的形式。

我正在尝试为 Quality Format 设置 AfterUpdate 事件,以便在自动填充控件后相应的表单将自动打开。

Private Sub QualityFormat_AfterUpdate()
    Select Case Me.QualityFormat
        Case "QualityFormat= SG Industrial"
            DoCmd.OpenForm FormName:="SGIndustrial"
        Case "QualityFormat= LG Industrial"
            DoCmd.OpenForm FormName:="LGIndustrial"
        Case "QualityFormat= SG Retail Carton"
            DoCmd.OpenForm FormName:="SGRetailCarton"
        Case "QualityFormat= LG Retail Carton"
            DoCmd.OpenForm FormName:="LGRetailCarton"
    End Select
End Sub

我没有收到任何错误消息,但是 Quality Format 更新后什么也没有发生。

由于您没有收到任何错误消息,也没有看到任何操作,我怀疑 case 语句中的 none 正在您的 select case 表达式中得到验证。

我看到您在每个 case 语句前加上 QualityFormat = 前缀,这不是必需的,如果不等于您的组合框控件返回的值,将导致验证失败。

我怀疑以下将因此按预期运行:

Private Sub QualityFormat_AfterUpdate()
    Select Case Me.QualityFormat
        Case "SG Industrial"
            DoCmd.OpenForm "SGIndustrial"
        Case "LG Industrial"
            DoCmd.OpenForm "LGIndustrial"
        Case "SG Retail Carton"
             DoCmd.OpenForm "SGRetailCarton"
        Case "LG Retail Carton"
             DoCmd.OpenForm "LGRetailCarton"
    End Select
End Sub

如果删除多余的前缀而不是解决问题,接下来要检查的是[返回的实际值=16=] - 根据组合框的绑定列,这可能会返回一个 ID 而不是您期望的描述。

您可以通过在代码的开头添加一个 Debug.Print 来检查这一点,这样您就可以在更改其值时验证此控件返回的值,也许还可以添加一个默认值 case这样您就可以验证没有先前的 case 语句正在被验证。


值得补充的是,如果您有一个用于 每个 可用选项的表单,那么由于您的命名约定,您的代码可以简化为:

Private Sub QualityFormat_AfterUpdate()
    If Not IsNull(Me.QualityFormat) Then
        DoCmd.OpenForm Replace(Me.QualityFormat, " ", "")
    End If
End Sub