首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Access LookUp表

Access LookUp表
EN

Stack Overflow用户
提问于 2011-06-02 22:59:58
回答 1查看 693关注 0票数 3

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

我让这些值起作用了,但是我似乎不能让空值出现。

我的查找表如下所示:

代码语言:javascript
复制
REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
NULL        N/A

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

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-02 23:17:38

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

代码语言:javascript
复制
REQUEST     REQUEST_TEXT
------------------------
A           Approve
D           Disapprove
U           Unknown

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

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

代码语言:javascript
复制
SELECT m.REQUEST, l.REQUEST_TEXT
FROM tblMain AS m
    INNER JOIN tblLookup AS l
    ON l.REQUEST = m.REQUEST;

您还应该创建两个表之间的关系,并选择强制引用完整性的选项,以防止用户为请求添加伪值,如"X“。

编辑:如果不需要更改tblMain结构,并且是在访问会话中执行此操作,则可以在左连接上使用Nz()函数。

代码语言:javascript
复制
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()。

代码语言:javascript
复制
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的连接

代码语言:javascript
复制
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的整个想法让我感到畏缩。我会把桌子修好。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6216293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档