【问题标题】:Null indexed values in Access ComboBoxAccess ComboBox 中的空索引值
【发布时间】:2017-03-02 14:52:26
【问题描述】:

我有一个带有 ComboBox 控件的 Access Form,其附加的记录包含 Null 值作为其中一行的索引,并设置为显示记录集的第二列。

当我打开列表时,我可以看到所有行,包括以 Null 为索引的行,我可以选择它,但是一旦 AfterUpdate 事件结束,显示的文本就会被删除。

我想显示 Null 的第二列,但我无法做到这一点。我想这是因为 Null 不等于任何东西(甚至不等于它本身),但是有解决方法吗?

数据库示例:

 Id      Description
+------+-------------+
|      | Default     |
|1     | Choice 1    |
|2     | Choice 2    |
.
.
.

如果我在 ComboBox 中选择“默认”,则该值正确设置为 Null,但显示的文本为空。如果我选择“Choice 1”(或“Choice 2”),则该值正确设置为 1(分别为 2),并且 ComboBox 中显示的值为“Choice 1”(分别为“Choice 2”)。

编辑:出于兼容性原因,该解决方案必须适用于 Access 2007

【问题讨论】:

    标签: ms-access combobox vba


    【解决方案1】:

    您可以使用MyCombo.ListIndex = 0 选择组合框中的第一个值。 这不会从内存中设置值,但应该正确显示。

    【讨论】:

    • 好主意,但我无法在 AfterUpdate() 事件和 Change() 事件中设置 Listindex=0。你把它放在哪里?
    • 实际上这可能不是正确的属性 - 尝试 Me.cboName = Me.cboName.Itemdata(0) - 抱歉,我目前无法对其进行测试。
    • ID 为 NULL 是不好的做法。为其分配零值。如果您不能在基础表中执行此操作,则创建一个查询并将查询设置为组合框的记录源:查询基本上会将 NZ([ID],0​​) 作为 ID2。所以你的默认值最终会得到 ID = 0 这应该可以解决你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多