【问题标题】:dblookupcombobox has a null rowdblookupcombobox 有一个空行
【发布时间】:2013-10-07 22:58:06
【问题描述】:

我有一个关于 DBLookupComboBox 的问题。

我有一个程序,其中包含我编写的数据库。它拥有一切,除了当我打开 DBLookupComboBox 时,它必须有一行具有空值,以便用户什么都不选择。但是一个都没有。如何让空行显示?

【问题讨论】:

    标签: database ms-access


    【解决方案1】:

    您必须添加一行写着“无”或“全部”的行,无论哪个都合适。通常的解决方案是一个 UNION 查询,它可以用作组合框的 RowSource。 Union 查询可用于添加虚拟字段。

    如果组合只包含唯一值,您可以说:

    SELECT "Nothing" As Description
    FROM ATable
    UNION 
    SELECT Description
    FROM ATable
    

    UNION 消除重复,UNION ALL

    SELECT DISTINCT "Nothing" As Description
    FROM ATable
    UNION ALL
    SELECT Description
    FROM ATable
    

    如果您希望“Nothing”首先排序,您必须稍微调整一下并使用“Nothing”或“-Nothing”,但如果您有 ID 或 Key 列,您可以获得很好的排序,如下所示:

    SELECT 0 As ID, "Nothing" As Description
    FROM ATable
    UNION 
    SELECT ID, Description
    FROM ATable
    

    【讨论】:

    • 当我想返回 1 行时,例如在 SELECT 中选择“All”或“Nothing”时,我在我的应用程序中最小的索引表上使用 SELECT TOP 1(如果可能,本地)。这似乎比 DISTINCT 更有效,但我从未实际测试过。
    • 我想只要保证选择的表在数据库的生命周期内保持不变。如果删除一个小表会导致广泛的问题,这可能会变得相当混乱。
    • 我不会删除表,因为一旦我实现了应用程序,架构就会在应用程序的整个生命周期内保持不变。我永远不会选择不属于主要数据模式的表,或者用户界面所依赖的表(例如我几乎所有应用程序前端的 tblConfig)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多