1

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

我有一个基于此表的表格,名为Production. 此表单上的第一个文本控件被调用Protean Resource,它是对应于各个记录的标识符。

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

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

Quality Format可以填充:

  • SG Industrial
  • LG Industrial
  • SG Retail Carton
  • LG Retail Carton

这些值中的每一个都对应于单独的表单。

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

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更新后什么都没有发生。

4

1 回答 1

1

由于您没有收到任何错误消息,也没有看到任何操作,我怀疑您的表达式中没有任何case语句得到验证。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

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

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


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

Private Sub QualityFormat_AfterUpdate()
    If Not IsNull(Me.QualityFormat) Then
        DoCmd.OpenForm Replace(Me.QualityFormat, " ", "")
    End If
End Sub
于 2019-07-22T19:52:46.060 回答