在数据输入期间有条件地隐藏字段,但在查看表单时显示所有填写的字段

时间:2018-02-12 21:16:37

标签: vba access-vba access

我对Access不是很新,但对VBA来说还不熟悉。

我有一个主窗体(MainFrm)和一个子窗体(SubFrm)。在子表单上,如果一个人对GeneralQuestion回答“是”,那么他们必须回答问题1并立即隐藏问题2。如果一个人对GeneralQuestion回答“否”,那么他们必须回答问题2并立即隐藏问题1。我在属性表上设置了Question1和Question2默认Visible = No。

以下是我的代码:

Private Sub GeneralQuestion_Change()
If Me.GeneralQuestion.Value = "Yes" Then
Me.Question1.Visible = True
Me.Question2.Visible = False
End If

If Me.GeneralQuestion.Value = "No" Then
Me.Question1.Visible = False
Me.Question2.Visible = True
End If

End Sub

我的问题是在表单的数据输入过程中,如果对GeneralQuestion回答是/否,则会显示/隐藏相应的字段,但是当您查看旧表单的MainFrm时,我看不到其中任何一个SubFrm字段(我假设这是因为我设置了默认的Visible = No并且它根据Change()事件设置为可见)。

有没有办法在查看MainFrm时添加另一行代码以使字段可见?或者是否有比Change()更好的事件使条件有条件地可见?

谢谢!

1 个答案:

答案 0 :(得分:0)

在主窗体的On Current事件中,执行以下操作:

Dim ctl As Control

Set ctl = Me.Questions.Form.Question1
ctl.Visible = True

Set ctl = Me.Questions.Form.Question2
ctl.Visible = True

这里,Questions是封装子表单的主窗体上的控件的名称。该控件的名称通常与子表单本身的名称不同;子表单仅仅是主表单中控件的控件源。

如果您从主窗体中单击子窗体,您的子窗体逻辑仍然会正常触发。当您单击返回主窗体并显示新的主记录时,此处显示的主窗体逻辑将触发,子窗体中的两个字段都将可见。