【问题标题】:Hide Controls in MS Access Based on Value Field基于值字段隐藏 MS Access 中的控件
【发布时间】: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 个子表单,并分别调用它们..
  • 不清楚你在问什么。此代码是否执行您希望它执行的操作?如果不是,您想做什么不起作用?
  • 不,问题是它没有做我想做的事。我需要的是它通过问题列表并根据问题类型隐藏相应的输入类型。目前我只是让它通过所有的问题,但这段代码没有做任何事情。它正是我目前所处的位置。

标签: vba ms-access ms-access-2010


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多