Ms access 访问查找表

Ms access 访问查找表,ms-access,lookup-tables,Ms Access,Lookup Tables,我需要在Access中创建一个查找表,其中所有缩写都与一个值相关,如果缩写(在主表中)为空,则我希望显示“未知” 我让这些值起作用了,但我似乎无法让空值显示出来 我的查找表如下所示: REQUEST REQUEST_TEXT ------------------------ A Approve D Disapprove NULL N/A 但当我按请求计数时,它只显示a和D的值,尽管我知道其中也有一些空格 我做错了什么?如果您更改tb

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

我让这些值起作用了,但我似乎无法让空值显示出来

我的查找表如下所示:

REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
NULL        N/A
但当我按请求计数时,它只显示a和D的值,尽管我知道其中也有一些空格


我做错了什么?

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

REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
U           Unknown
然后,在tblMain中,将请求字段更改为Required=True和Default Value=“U”。添加新记录时,除非用户将其更改为A或D,否则它们将有U供请求

然后,根据请求连接这两个表的查询应该会得到我认为您想要的结果

SELECT m.REQUEST, l.REQUEST_TEXT
FROM tblMain AS m
    INNER JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;
您还应该在这两个表之间创建一个关系,并选择强制引用完整性的选项,以防止用户为请求添加虚假值,如“X”

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

SELECT m.REQUEST, Nz(l.REQUEST_TEXT, "Unknown")
FROM tblMain AS m
    LEFT JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;
如果您在访问会话之外执行此操作,如从ASP,则Nz()函数将不可用。因此可以用IIf()表达式替换Nz()

Edit2:不能使用空值直接联接。然而,对于我为tblLookup建议的“Unknown”行,您可以使用一个包含Nz for 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;

如果希望将请求_TEXT=Unknown的tblLookup请求保留为Null,我想可以在JOIN表达式的两侧使用Nz。然而,加入Nulls的整个想法让我畏缩。我会改为修复表。

我无法更改tblMain中的任何内容,是否有方法创建tblLookup以提供所有空值的Unknown?您可以创建一个名为“qryMain”的查询,该查询复制tblMain,除了显示Unknown而不是空值。然后其他表将使用qryMain而不是tblMain进行查找
SELECT m.id, m.request, l.request_text
FROM tblMain AS m
    INNER JOIN tblLookup AS l
    ON Nz(m.request,"U") = l.request;