如果您更改 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 的整个想法让我感到畏缩。我会修理桌子。