基于值字段隐藏 MS Access 中的控件

Posted

技术标签:

【中文标题】基于值字段隐藏 MS Access 中的控件【英文标题】:Hide Controls in MS Access Based on Value Field 【发布时间】:2014-08-26 15:58:37 【问题描述】:

我试图在 MS Access 的表单中隐藏一些控件。这个想法是链接表具有诸如 OpenResponse 或 OptionBox 之类的问题类型。鉴于此输入,我想切换用户可以输入的输入类型。这是我所拥有的示例:

Private Sub QuestionType_AfterUpdate()

    Dim QType As String

    Set QType = Me.QuestionType.Value

    Select Case QType

        Case OpenResponse
            Forms("Survey").Controls(AnswerField).Visible = True
            Forms("Survey").Controls(OptionTitle).Visible = False
            Forms("Survey").Controls(OptionFrame).Visible = False
            Forms("Survey").Controls(Option69).Visible = False
            Forms("Survey").Controls(Option70).Visible = False
            Forms("Survey").Controls(Option71).Visible = False
            Forms("Survey").Controls(Option72).Visible = False
            Forms("Survey").Controls(Option73).Visible = False
            Forms("Survey").Controls(Option74).Visible = False
            Forms("Survey").Controls(Option75).Visible = False
            Forms("Survey").Controls(Option76).Visible = False
            Forms("Survey").Controls(Option77).Visible = False
            Forms("Survey").Controls(Option78).Visible = False

        Case OptionBox

            Forms("Survey").Controls(AnswerField).Visible = False
            Forms("Survey").Controls(OptionTitle).Visible = True
            Forms("Survey").Controls(OptionFrame).Visible = True
            Forms("Survey").Controls(Option69).Visible = True
            Forms("Survey").Controls(Option70).Visible = True
            Forms("Survey").Controls(Option71).Visible = True
            Forms("Survey").Controls(Option72).Visible = True
            Forms("Survey").Controls(Option73).Visible = True
            Forms("Survey").Controls(Option74).Visible = True
            Forms("Survey").Controls(Option75).Visible = True
            Forms("Survey").Controls(Option76).Visible = True
            Forms("Survey").Controls(Option77).Visible = True
            Forms("Survey").Controls(Option78).Visible = True

    End Select

End Sub

【问题讨论】:

我会制作 2 个子表单,并分别调用它们.. 不清楚你在问什么。此代码是否执行您希望它执行的操作?如果不是,您想做什么不起作用? 不,问题是它没有做我想做的事。我需要的是它通过问题列表并根据问题类型隐藏相应的输入类型。目前我只是让它通过所有的问题,但这段代码没有做任何事情。它正是我目前所处的位置。 【参考方案1】:

在这里,您不是在想“开箱即用”。在这种环境中,“在盒子里”思考可能会毁了你的一天。

这是何时使用表驱动方法的完美示例。这里的主要问题是;问题可以/会改变吗?可能的答案是,是的。在这种情况下,我会这样做:

创建一个名为“问题”的表。在该表中,列出问题(可能在备注字段中,但文本字段可能有效)、问题类型、控件名称和值(真或假)。然后,您可以根据问题类型查询 Questions 表,并遍历生成的数据集以设置控件的 Visible 属性。这样,您以后可以随时在必要时添加更多问题。事实上,您还可以添加一个名为 QuestionID 的主键和一个名为 Active 的 True/False 字段,这样您就可以返回并删除一些问题而无需创建孤立记录,并仅查询标记为 Active 的问题。

如果我误解了你的目的,请告诉我,我会尝试相应地编辑我的答案。

【讨论】:

以上是关于基于值字段隐藏 MS Access 中的控件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS-Access 的表单上显示 Web 浏览器控件中的表格字段内容?

基于当前字段值的MS访问表单组合框行源

MS Access - 更改表单中的值后立即写入表

在 MS Access 组合框中,如何将表单值用作 where 类

MS Access vba中的分组字段

另一个选择查询中的 MS Access 选择查询,用于选择另一个字段值