我正在尝试将一些地址字段合并到报告的一个文本框中:
=[City]+", "+[County]+", "+[Post Code]
但是,并非所有记录在 [County] 列中都有条目,这意味着这些记录的文本框中根本没有显示任何内容。所以我尝试了一个 Iif 语句:
=IIf([County],[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code])
这不起作用,我怎样才能让文本框显示存在的任何字段?
最简单的解决方案 IMO:使用Nz。
=[City]+", "+Nz([County]+", ")+[Post Code]
尽管您可能希望使用 ot&
而不是+
. 在 Access+
中意味着求和,但&
意味着串联。
你离得太近了!
=[City]+", "+[County]+", "+[Post Code]
应该:
=[City]&", "&[County]&", "&[Post Code]
请记住,NULL 胜过数学中的一切,因此每次任何字段为空白时,使用加号运算符都会为您提供 NULL 结果。
你的IIf
陈述很接近。
您错过了 2 个可能的测试之一
如果只能出现空值,
=IIf(IsNull([County]),[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code])
如果它可以为空 ( ""
) 或 null
=IIf(len(""&[County]),[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code])
您可以利用两个连接运算符 (+
和&
) 以不同方式处理 Null 的事实。
? "A" + Null
Null
? "A" & Null
A
所以你可以这样做...
? "A" & ", " & "B" & ", " & "C"
A, B, C
? "A" & ", " & Null & ", " & "C"
A, , C
...但是如果您在使用 Null 而不是第二个字符串值时不想要两个逗号,请改为执行以下操作:
? "A" & (", " + Null) & ", " & "C"
A, C
如果这一切都有意义,请将相同的模式应用于您的文本框控件源:
=[City] & (", " + [County]) & ", " & [Post Code]
您不需要函数(IIf
、IsNull
、Len
和/或Nz
)来获得您想要的内容。
请试试这个:相当丑陋的想法......当 Chr(13) 和 Chr(10) 在那里时,它永远不会是空的。
IIf(Isnull([County]),
IIf(Isnull([Post Code]),
IIf(IsNull[Post Code]), "No Address", [Post Code]),
[City] + Chr(13) & Chr(10) +[Post Code]),
[Country] + Chr(13) & Chr(10) + [City] + Chr(13) & Chr(10) +[Post Code])