1

我将两张桌子连接在一起。当另一列中没有数据时,我想选择一列。其中一个字段是来自 qdRevenueConsolidatedByHE 的“SumOfHourlykWh”,另一个是来自 adSCADAConsolidatedByHE 的“SumOfAverage”。

新领域的功能是:kWh: kWhHE([SumOfHourlykWh],[SumOfAverage])

我的 VBA 代码是:

Public Function kWhHE(dRevkWh As Double, dSCADAkWh As Double) As Double

If dRevkWh = "" Then
    kWhHE = dRevkWh
Else
    kWhHE = dSCADAkWh
End If

End Function 

为什么将#Error 放在字段 KWh 中?

4

1 回答 1

2

如果在查询中调用函数时 [SumOfHourlykWh] 或 [SumOfAverage] 为 Null ...

kWhHE([SumOfHourlykWh],[SumOfAverage])

...它将触发错误条件,因为该函数已为其两个参数声明了 Double 。Null 不是 Double 类型;而 Double 变量不能接受 Null。

Nz当字段为 Null 时,您可以通过使用替换另一个值来避免该问题。如果零是两个字段的合理替代...

kWhHE(Nz([SumOfHourlykWh], 0), Nz([SumOfAverage], 0))

或者,您可以将函数的参数数据类型从 Double 更改为 Variant。然后该函数将接受 Null。但是,您还需要修改函数以正确处理 Null 并处理其他数据类型,例如函数参数的字符串。

于 2013-10-25T20:35:48.763 回答