首页 > 解决方案 > 仅在不为空时添加

问题描述

我正在尝试在表单中设置一个文本框以显示一系列其他文本框的总数。如果没有值,我希望该框为空,但任何值都需要显示,即使只有一个贡献源具有值。

假设有三个贡献框:txtScore1,txtScore2txtScore3, 和 sum 框txtTotal。在数据出现在任何分数框中之前,它们包含一个空值。所以我尝试将txtTotal控制源设置为:

=Iif(Not IsNull([txtScore1]),[txtScore1])+
Iif(Not IsNull([txtScore2]),[txtScore2])+
Iif(Not IsNull([txtScore3]),[txtScore3])

但这仅在所有三个都有值时才给出一个值,如任何值 + Null = Null。如果我向它们添加 0 的 FalsePart,则即使三个都是空的,值txtTotal始终为 0。必须在整个事情之前添加一个Iif(IsNull([txtScore1]) and IsNull([txtScore2]) and IsNull([txtScore3]),null,...,还是有更好的方法?

标签: ms-access

解决方案


NZ函数可以处理这种情况,假设您可以使用它:

=Iif(IsNull([txtScore1]) AND IsNull([txtScore2]) AND IsNull([txtScore3]),
     NULL,
     Nz([txtScore1], 0) + Nz([txtScore2], 0) + Nz([txtScore3], 0))

Nz是标准COALESCE函数的Access版本,它使用第二个参数作为值应该第一个参数是NULL。查看Tech On The Net页面,了解如何使用它的一些示例。


推荐阅读