我有一个绑定到字段[选定任务ID]的组合框([TaskID])。 [任务ID]的行源来自一个表,包括[任务ID]和[任务名称],仅限于[活动](该表中的另一个字段)= True的条目。由于[任务ID]是要在[所选任务ID]字段中输入的值,因此将其设置为绑定列。但是,由于没有人需要查看[任务ID](它只是一个自动编号)的值,因此列数设置为2,宽度设置为0“; 2”。 今天有两个任务,[Active]标志设置为True,我有不同的记录,其中[Selected Task ID]字段是这两个任务中的一个或另一个。在表单上,它看起来像:
Task Name
Record 1: Task 1
Record 2: Task 2
明天,任务1将不再处于活动状态(即,您无法再为其分配时间)。我仍然希望能够看到记录1显示“任务1”(因为它的[任务ID]存储在[所选任务ID]字段中),但我不希望能够选择< / em>任务1了。但是,当任务1的[Active]设置为False时,表单字段上的 display 为空白:
Task Name
Record 1:
Record 2: Task 2
(请记住,组合框用于显示和设置该字段的数据。)查看数据表本身,确实存储了任务ID,但未显示与其关联的名称(大概是因为由于[Active]标志被设置为No而被排除在组合框选项之外。
如何只显示以前有效条目的值,而只启用当前有效条目的选择?
答案 0 :(得分:1)
您可以创建两个组合框:一个用于数据显示而不过滤非活动元素,第二个用于数据选择,具有过滤功能。将显示控制放在选择一上,并将代码添加到显示控件的GotFocus
事件:
Me.cboSelect.SetFocus
Me.cboSelect.Dropdown
现在有效和无效的条目将始终可见,但用户无法从下拉列表中选择无效行。如果单击该字段,此变通方法的缺点是无效条目的值将消失。
您可以使用活动指示符向行源查询添加第三列,首先按活动字段对列表进行排序,以便将非活动元素移动到列表末尾,并将代码添加到组合框的Before Update
事件中,这不允许用户选择包含非活动元素的行。