我在 Access 中有一个查询,其中一个字段包含一个子查询,该查询返回相关表中特定字段的总和。子查询的结果用于主查询中的进一步计算。
这在使用 ADO.Net 的 VB.Net(C# 很好)中的自制报告应用程序中使用。查询存储在 Access 的表中,以允许我们更正小错误或添加与数据相关的临时功能,而无需再次发布我们的应用程序。
问题是子查询可能没有返回结果(null)。此外,计算中使用的空值也将返回空值。因此,如果需要,我需要将空值替换为 0。我添加了NZ(subquery, 0)
,但 ADO.Net 抛出以下异常:
Undefined function 'NZ' in expression
我了解到不可能在 ADO.Net 中使用 VBA 函数,因为它是 Access.Application 对象的一部分。
我也考虑过使用IIF(subquery Is Null, 0, subquery)
,但这会迫使我复制子查询,并强制 Access 执行子查询两次(可能)。由于子查询相当复杂(主查询也是如此),我想避免这种情况,至少为了可读性,如果不是性能的话。
是否有另一种方法可以用另一个值替换空值,或者确保我的子查询即使没有匹配记录也将始终返回非空总和?