我如何 hide/unhide 基于来自两个组合框的输入的子表单?

How do I hide/unhide a subform based on the input from two comboboxes?

我有一个名为 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

我在另一个答案中找到了这段代码的一般形式,这里是: 但是代码似乎对我不起作用。

当前子表单设置为 Visible:No 所以什么都没有出现。 如果我改变它,它不会消失,空的子表单仍然可见。 这不是问题,除非我需要将此表单用于另一个查询,并希望在第二个子表单准备好使用时将它们叠加在一起。

稍后,此表单将用于根据不同的子表单将更新集推送到 table。

代码是否有明显错误,或者我是否遗漏了某个地方的设置?

你可以试试这个:

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 搜索作为主窗体而非子窗体打开的窗体。