在访问中的报表的文本框中组合字段,一些为null

时间:2012-12-18 15:25:43

标签: database vba ms-access access-vba

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

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

然而,并非所有记录在[县]列中都有一个条目,这意味着文本框中根本没有任何内容显示这些记录。所以我尝试了一个Iif声明:

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

这不起作用,如何让文本框显示任何字段?

5 个答案:

答案 0 :(得分:6)

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

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

虽然您可能不想使用&而不是+。在Access +中表示求和,但&表示连接。

答案 1 :(得分:3)

你太近了!

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

应该是:

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

请记住,NULL会胜过数学中的所有内容,因此每当任何字段为空时,使用plus运算符会给出NULL结果。

答案 2 :(得分:1)

你接近IIf声明。

您缺少两种可能的测试之一

如果只能显示空值,

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

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

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

答案 3 :(得分: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)来获取您想要的内容。

答案 4 :(得分: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])