2015-11-19 21 views
1

组合框中选择我有一个组合框([的TaskID])。 [任务ID]的行源来自表格,并包含[任务ID]和[任务名称],仅限于[有效](该表中另一字段)= True的条目。由于[任务ID]是要在[选择的任务ID]字段中输入的值,因此将其设置为绑定列。因为没有人需要查看[任务ID](它只是一个自动编号)的值,所以列计数设置为2,宽度设置为0“; 2”。 今天有两个任务的[Active]标志被设置为True,并且我有不同的记录,其中[Selected Task ID]字段是这两个任务中的一个。在窗体上,它看起来像:如何显示绑定到字段[选定的任务ID]不能被选择

  Task Name 
Record 1: Task 1 
Record 2: Task 2 

明天,任务1将不再有效(即不能分配时间它了)。我仍然希望能够看到“任务1”的记录显示1(因为它的[任务ID]存储在[选定的任务ID]字段),但我不希望能够选择任务1了。当[有效]被设定为False的任务1,但是,在表单字段的显示是空白:

  Task Name 
Record 1: 
Record 2: Task 2 

(记住组合框既用于该字段显示和设置数据)查看数据表本身,确实存储了任务ID,但与其关联的名称未显示(大概是因为[Active]标志被设置为No,所以它不在组合框选项中) 。

我怎么能显示以前有效条目的值,而只是实现的目前有效条目的选择?

回答

1
  1. 您可以创建两个组合框:一个用于数据显示而不过滤非活动元素,第二个用于数据选择和过滤。将显示控制选择一个和代码添加到GotFocus事件显示控制:

    Me.cboSelect.SetFocus 
    Me.cboSelect.Dropdown 
    

    现在有效和无效的条目将始终可见,但用户将无法从下拉列表中选择无效的行。此解决方法的减号是,如果单击该字段,无效条目的值将消失。

  2. 您可以将第三列添加到具有活动指示符的行源查询中,首先按活动字段对列表进行排序,以便将非活动元素移动到列表末尾并将代码添加到Before Update ComboBox的事件,该行为不允许用户选择具有非活动元素的行。

+0

您的“选项2”就是我最终做的事情......伟大的思想家都认为(至少我们是这样做的)。选项2与Before Update事件的附加好处是,我可以提出警告,但允许用户选择非活动元素,如果这是他们真正想做的事情(例如,“回溯”活动)。谢谢! – ragoertz

相关问题