Access中的自定义函数在查询中返回#Error

时间:2013-10-25 20:23:08

标签: ms-access ms-access-2007 access-vba

我正在加入两张桌子。我想在另一列中没有数据时选择一列。其中一个来自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中?

1 个答案:

答案 0 :(得分:2)

当您在查询中调用该函数时,如果[SumOfHourlykWh]或[SumOfAverage]为空...

kWhHE([SumOfHourlykWh],[SumOfAverage])

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

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

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

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