3

我正在尝试将一些地址字段合并到报告的一个文本框中:

=[City]+", "+[County]+", "+[Post Code]

但是,并非所有记录在 [County] 列中都有条目,这意味着这些记录的文本框中根本没有显示任何内容。所以我尝试了一个 Iif 语句:

=IIf([County],[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code])

这不起作用,我怎样才能让文本框显示存在的任何字段?

4

5 回答 5

6

最简单的解决方案 IMO:使用Nz

=[City]+", "+Nz([County]+", ")+[Post Code]

尽管您可能希望使用 ot&而不是+. 在 Access+中意味着求和,但&意味着串联。

于 2012-12-18T15:40:06.147 回答
3

你离得太近了!

=[City]+", "+[County]+", "+[Post Code]

应该:

=[City]&", "&[County]&", "&[Post Code]

请记住,NULL 胜过数学中的一切,因此每次任何字段为空白时,使用加号运算符都会为您提供 NULL 结果。

于 2012-12-18T15:36:45.840 回答
1

你的IIf陈述很接近。

您错过了 2 个可能的测试之一

如果只能出现空值,

=IIf(IsNull([County]),[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code])

如果它可以为空 ( "") 或 null

=IIf(len(""&[County]),[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code])
于 2012-12-18T15:38:22.193 回答
1

您可以利用两个连接运算符 (+&) 以不同方式处理 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]

您不需要函数(IIfIsNullLen和/或Nz)来获得您想要的内容。

于 2012-12-18T16:11:07.167 回答
0

请试试这个:相当丑陋的想法......当 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])
于 2012-12-18T15:45:03.690 回答