问题描述
我有一个主窗体,叫做 TrainingsSU 在其中我调用子表单 qry_TrainingSU(从同名查询构建) 我进行了设置,以便记录根据主表单中的两个组合框自动填充子表单。
但是我需要做的是隐藏子表单,并且仅在填充两个组合框并加载记录时才显示它。
这是当前的 VBA(我什至不是新手)
Private Sub cbo_EmployeeLookup_AfterUpdate()
Me!qry_TrainingsSU.Requery
If Me.cbo_EmployeeLookup.Value = "" Then
Forms!qry_TrainingsSU.Visible = False
Else
Forms!qry_TrainingsSU = True
End If
End Sub
Private Sub cbo_TrainingName_AfterUpdate()
Me!qry_TrainingsSU.Requery
If Me.cbo_TrainingName.Value = "" Then
Forms!qry_TrainingsSU = False
Else
Forms!qry_TrainingsSU.Visible = True
End If
End Sub
我在另一个答案中找到了这段代码的一般形式,这里:MS Access: Hide and Unhide subform based on drop down in Main Form 但是代码似乎对我不起作用。
当前子窗体设置为可见:否 所以什么都没有出现。 如果我更改它,它不会消失并且空子表单仍然可见。 这不是问题,除非我需要将此表单用于另一个查询,并希望在第二个子表单准备好使用时将它们分层。
稍后将使用此表单将 UPDATE SET 推送到基于不同子表单的表。
解决方法
你可以试试这个:
Private Sub updateStates()
Me!qry_TrainingsSU.Form.Requery
If (Me.cbo_EmployeeLookup.Value <> "" AND Me.cbo_TrainingName.Value <> "") Then
Me!qry_TrainingsSU.Visible = True
Else
Me!qry_TrainingsSU.Visible = False
End If
End Sub
Private Sub cbo_EmployeeLookup_AfterUpdate()
updateStates
End Sub
Private Sub cbo_TrainingName_AfterUpdate()
updateStates
End Sub
Forms!qry_TrainingsSU
搜索作为主表单打开的表单,而不是子表单。