我需要在Access中创建一个查找表,其中所有的缩写都与一个值相关,如果缩写(在主表中)为null,那么我希望显示“未知”。
我让这些值起作用了,但是我似乎不能让空值出现。
我的查找表如下所示:
REQUEST REQUEST_TEXT
------------------------
A Approve
D Disapprove
NULL N/A但是当我按请求进行计数时,它只显示A和D的值,尽管我知道其中也有一些空格。
我做错了什么?
发布于 2011-06-02 23:17:38
如果您更改了tblLookup,这应该会更容易。
REQUEST REQUEST_TEXT
------------------------
A Approve
D Disapprove
U Unknown然后,在tblMain中,将请求字段更改为Required = True和Default Value = "U“。当添加新记录时,它们将以U表示请求,除非用户将其更改为A或D。
然后,根据请求连接这两个表的查询应该会得到我认为您想要的结果。
SELECT m.REQUEST, l.REQUEST_TEXT
FROM tblMain AS m
INNER JOIN tblLookup AS l
ON l.REQUEST = m.REQUEST;您还应该创建两个表之间的关系,并选择强制引用完整性的选项,以防止用户为请求添加伪值,如"X“。
编辑:如果不需要更改tblMain结构,并且是在访问会话中执行此操作,则可以在左连接上使用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建议的"Unknown“行,您可以使用包含用于tblMain.REQUEST的Nz的连接
SELECT m.id, m.request, l.request_text
FROM tblMain AS m
INNER JOIN tblLookup AS l
ON Nz(m.request,"U") = l.request;如果您想将REQUEST_TEXT = Unknown的tblLookup请求保留为Null,我想您可以在JOIN表达式的两端使用Nz。然而,加入Nulls的整个想法让我感到畏缩。我会把桌子修好。
https://stackoverflow.com/questions/6216293
复制相似问题