【问题标题】:Hide items in Access 2007 combo box without also clearing the text for records that refer to the hidden items隐藏 Access 2007 组合框中的项目,而不清除引用隐藏项目的记录的文本
【发布时间】:2012-04-02 20:47:26
【问题描述】:

假设我在 Access 2007 中有两个表:

Table 'Person:
  Id : Autonumber
  Name : Text
  IsActive : Yes/No

Table 'Note':
  Id : Autonumber
  PersonId : Number (foreign key, Person.Id)
  Note : Memo

我有一个表格,列出了 Note 表中的所有条目,并允许用户插入/更新记录。表单上 Person 字段的控件是一个带有

的组合框
Control Source = PersonId
Row Source = SELECT Person.Name, Person.Id FROM Person;
Bound Column = 2
Column Count = 2
Column Widths = 3cm;0cm

现在我想限制组合框,使其只允许选择活跃的人员,但是当我向 RowSource 查询添加“WHERE Person.IsActive”时,所有引用非活跃人员的记录的组合框都会显示空白的。我认为将“限制列表”选项设置为“否”可以解决此问题,但是当我执行 Access 时,我会强制我更改显示的列,以便组合框现在显示人员 ID 而不是人员姓名,这不是有帮助。

有没有两全其美的好方法?我希望能够从组合框列表中隐藏不活跃的人,但仍然让不活跃的人显示为组合框的值,这些记录是在当前不活跃的人仍然活跃时创建的。

编辑:相关问题:Custom row source for combo box in continuous form in Access

【问题讨论】:

    标签: ms-access combobox


    【解决方案1】:

    您可以向当前事件添加代码,根据该人是活动还是非活动来更改行源,或者您可以显示一个文本框并在相同的条件下隐藏组合框。

    【讨论】:

    • this question 的答案更加充实了您的解决方案,对我很有帮助。
    • @ralbatross 您的评论暗示您使用的是连续形式,这完全是另一回事。例如,未绑定的控件和连续表单将不起作用。
    • 是的,我使用的是连续表格。是的,我发现未绑定的控件正在引起问题。我想我跳过枪将其标记为解决方案。对不起
    • 您不能将未绑定控件与连续表单一起使用。你可以绑定控件吗?然后,您可以在记录处于非活动状态时使用条件格式来禁用控件。如果我有更多信息,也许可以提供更多详细信息。
    • 我可以绑定组合框,是的,但我不能既绑定它又限制它的值。如果我这样做了,那么组合框将不再显示使用未出现在下拉列表中的值的记录的值。
    【解决方案2】:

    如果您将 isactive 列添加到 Row Source 并显示它,以便用户可以看到哪些人处于活动状态

    行来源 = SELECT Person.Name、Person.id、Person.IsActive FROM Person

    列数 = 3

    列宽 = 3cm;0cm;1cm

    然后在组合框的更新前事件中

    Private Sub Combo10_BeforeUpdate(Cancel As Integer)
    If Not Me.Combo10.Column(2) Then
      MsgBox "You can only pick active people"
      Cancel = True
    End If
    

    【讨论】:

    • 为什么要让用户有机会做出无效的选择,然后告诉他们他们的选择是不可接受的?最好让他们从可接受的值中进行选择,IMO。
    猜你喜欢
    • 2015-01-21
    • 2011-04-15
    • 2016-11-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多