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

时间:2014-08-26 15:58:37

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

我试图在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

1 个答案:

答案 0 :(得分:0)

你没想到"开箱即用",这里。在这种类型的环境中,思考"在框内"可以毁了你的一天。

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

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

如果我误解了你的目的,请告诉我,我会相应地修改我的答案。