【问题标题】:Access LookUp table访问查找表
【发布时间】:2011-06-02 14:59:57
【问题描述】:

我需要在 Access 中创建一个查找表,其中所有缩写都与一个值相关,如果缩写(在主表中)为空,那么我想显示“未知”

我得到了值,但我似乎无法让空值显示出来。

我的查找表如下所示:

REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
NULL        N/A

但是当我按请求进行计数时,它只显示 A 和 D 的值,尽管我知道那里也有一些空白。

我做错了什么?

【问题讨论】:

    标签: ms-access lookup-tables


    【解决方案1】:

    如果您更改 tblLookup,这应该会更容易。

    REQUEST     REQUEST_TEXT
    ------------------------
    A           Approve
    D           Disapprove
    U           Unknown
    

    然后,在 tblMain 中,将 REQUEST 字段更改为 Required = True 和 Default Value = "U"。添加新记录时,除非用户将其更改为 A 或 D,否则它们将使用 U 表示 REQUEST。

    然后,在 REQUEST 上连接 2 个表的查询应该可以得到我认为你想要的。

    SELECT m.REQUEST, l.REQUEST_TEXT
    FROM tblMain AS m
        INNER JOIN tblLookup AS l
        ON l.REQUEST = m.REQUEST;
    

    您还应该在 2 个表之间创建关系,并选择强制参照完整性选项,以防止用户为 REQUEST 添加虚假值,例如“X”。

    编辑: 如果无法更改 tblMain 结构,并且您是在 Access 会话中执行此操作,则可以在 LEFT JOIN 上使用 Nz() 函数。

    SELECT m.REQUEST, Nz(l.REQUEST_TEXT, "Unknown")
    FROM tblMain AS m
        LEFT JOIN tblLookup AS l
        ON l.REQUEST = m.REQUEST;
    

    如果您在 Access 会话之外执行此操作,例如从 ASP 中,则 Nz() 函数将不可用。所以你可以用 IIf() 表达式代替 Nz()。

    SELECT m.REQUEST, IIf(l.REQUEST_TEXT Is Null, "Unknown", l.REQUEST_TEXT)
    FROM tblMain AS m
        LEFT JOIN tblLookup AS l
        ON l.REQUEST = m.REQUEST;
    

    Edit2:您不能直接加入 Null 值。但是,对于我为 tblLookup 建议的“未知”行,您可以使用包含 Nz 的 JOIN 用于 tblMain.REQUEST

    SELECT m.id, m.request, l.request_text
    FROM tblMain AS m
        INNER JOIN tblLookup AS l
        ON Nz(m.request,"U") = l.request;
    

    如果您想将 tblLookup REQUEST 保留为 Null for REQUEST_TEXT = Unknown,我想您可以在 JOIN 表达式的两侧使用 Nz。然而,加入 Nulls 的整个想法让我感到畏缩。我会改修桌子。

    【讨论】:

    • 我无法更改 tblMain 中的任何内容,有没有办法创建一个 tblLookup 为我提供 Unknown for all nulls?
    • 您可以创建一个名为“qryMain”的查询,该查询与 tblMain 重复,但显示的是 Unknown 而不是 Nulls。然后您的其他表将使用 qryMain 而不是 tblMain 进行查找
    猜你喜欢
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多