运行 组合框更新控件后的 AfterUpdate
Run AfterUpdate after a control is updated by combo box
我有一个名为 Product Master Data
的 table,其中包含 785 条记录。
我有一个基于这个 table 的表格,叫做 Production
。此表单上的第一个文本控件称为 Protean Resource
,它是对应于各个记录的标识符。
我将此控件设置为组合框,在其中选择资源编号后,表单上的其余文本控件会自动更新以显示所选记录的准确信息。
其中一个自动更新的控件称为 Quality Format
。
Quality Format
可以填充为:
SG Industrial
LG Industrial
SG Retail Carton
LG Retail Carton
这些值中的每一个都对应于不同的形式。
我正在尝试为 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
我有一个名为 Product Master Data
的 table,其中包含 785 条记录。
我有一个基于这个 table 的表格,叫做 Production
。此表单上的第一个文本控件称为 Protean Resource
,它是对应于各个记录的标识符。
我将此控件设置为组合框,在其中选择资源编号后,表单上的其余文本控件会自动更新以显示所选记录的准确信息。
其中一个自动更新的控件称为 Quality Format
。
Quality Format
可以填充为:
SG Industrial
LG Industrial
SG Retail Carton
LG Retail Carton
这些值中的每一个都对应于不同的形式。
我正在尝试为 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