我需要访问,所有的缩写相关的值来创建一个查找表,如果缩写(在主表)为空,然后我想显示“未知”访问查找表
我得到了值的工作,但我似乎无法得到空值显示。
我的查找表是这样的:
REQUEST REQUEST_TEXT
------------------------
A Approve
D Disapprove
NULL N/A
但是当我被要求做一个数,那只能说明我和d值,所有虽然我知道里面还有一些空白以及。
我在做什么错?
我需要访问,所有的缩写相关的值来创建一个查找表,如果缩写(在主表)为空,然后我想显示“未知”访问查找表
我得到了值的工作,但我似乎无法得到空值显示。
我的查找表是这样的:
REQUEST REQUEST_TEXT
------------------------
A Approve
D Disapprove
NULL N/A
但是当我被要求做一个数,那只能说明我和d值,所有虽然我知道里面还有一些空白以及。
我在做什么错?
如果更改tblLookup,这应该会更容易。
REQUEST REQUEST_TEXT
------------------------
A Approve
D Disapprove
U Unknown
然后,在tblMain中,将REQUEST字段更改为Required = True和Default Value =“U”。当添加新记录时,除非用户将其更改为A或D,否则它们将具有U.
然后,在REQUEST上连接2个表的查询应该会得到您想要的结果。
SELECT m.REQUEST, l.REQUEST_TEXT
FROM tblMain AS m
INNER JOIN tblLookup AS l
ON l.REQUEST = m.REQUEST;
还应该创建2和表之间的关系,然后选择执行,以防止所述用户添加一个杂散值,如“X”为REQUEST参照完整性的选项。
编辑: 如果改变tblMain结构是假表,如果你从一个访问会话中执行此操作,您可以使用NZ()函数在一个LEFT JOIN。
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值JOIN。然而,随着“未知”行我建议tblLookup,你可以使用JOIN,其中包括NZ在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_TEXT =未知,我想你可以使用Nz在JOIN表达式的两边。然而,加入Nulls的整个想法让我感到畏缩。我会修改表格。
我不能改变tblMain中的任何东西,有没有办法创建一个tblLookup给所有空值的Unknown? – 2011-06-02 15:24:16