根据用户交互控制表单的外观

时间:2013-11-04 20:33:14

标签: forms ms-access conditional ms-access-2013

我需要构建一个可用于提交两种类型请求的表单,但每种类型必须收集的数据略有不同。也就是说,我有定期订单和特殊要求,这些订单和特殊要求都以相同的形式实现 目前,表单包含“Stock Items”或“Special Requests”的下拉列表,如果选择Stock Items,则使用另一个字段“ItemName”(这是一个控件列表)来选择哪个Stock Item获取重新排序。控制列表对于最小化定期存储的项目的拼写变化(为了便于报告)非常重要。 另一方面,特殊请求必须由经理批准,必须与另一个表单中的原始请求ID相关联,并且无法预测ItemName,因此ItemName字段必须成为自由文本字段。因此,流程如下:如果选择“特殊请求”,则需要清除控件列表中的ItemName字段以允许自由式键入,需要出现一个复选框,其标签为“经过批准的经理?”最后,必须出现一个用于输入相关特殊请求ID的字段,该字段也可能被控制。 基本上,我需要能够控制表单的流程,具体取决于所做的选择。

这就是我所做的:我已进入表单的设计视图,突出显示字段ItemName,并将其从组合框更改为文本框,确认我可以在两种格式之间切换。然后,我从“格式”选项卡中选择了“条件格式”,但是,可用选项不允许我评估其他字段的内容 我没有使用VBA编程的经验......这可以在没有VBA代码的情况下完成吗?

1 个答案:

答案 0 :(得分:0)

好的,这里有点推动让你入门。在您的特定情况下,您不需要根据请求类型在组合框和文本框之间切换。名称“组合框”指的是它是文本框和下拉列表的组合。

如果组合框的.LimitToList属性为No,则用户可以从列表中选择一个项目,或者他们可以输入其他值。如果.LimitToListYes,则他们必须从列表中选择一个项目。

因此,您需要做的就是根据“请求类型”的组合框的当前值切换“项目”的组合框的.LimitToList属性。这可以通过“请求类型”组合框的After Update事件处理程序中的单行VBA代码来完成:

Option Explicit

Private Sub cbxRequestType_AfterUpdate()
    Me.cbxItem.LimitToList = (Me.cbxRequestType.Value = "Stock Item")
End Sub

可以想象,相同的事件处理程序(对于名为cbxRequestType的组合框)可用于显示/隐藏表单上的其他控件(例如,“经批准的经理”复选框),方法是切换它们.Visible属性。