【发布时间】:2017-06-21 07:08:25
【问题描述】:
我编写了一个 VBA 函数,它可以即时构建 INSERT INTO 查询。此查询根据从另一个表中选择的公式计算分数
例如,公式 "[Cash]/[Sales]" 会产生如下查询:
INSERT INTO tblKPIScores
SELECT Employee, [Cash]/[Sales] as Score
FROM tblBasedata
为了避免 div/0 错误,我尝试编写另一个函数,该函数能够计算出公式的哪个部分(如果有)包含除数,然后在 SQL 查询中单独进行测试,例如
INSERT INTO tblKPIScores
SELECT Employee, IIF([Sales] = 0,0,[Cash]/[Sales]) as Score
FROM tblBasedata
但是,有些公式非常复杂,带有很多括号,并且可能包含多个除数,因此我无法编写一个可以可靠地返回任何给定公式的除数的 UDF。
我现在正在尝试这样的事情:
INSERT INTO tblKPIScores
SELECT Employee, IIF(ISERROR(tScore),0,tScore) AS Score
FROM
(SELECT Employee, [Cash]/[Sales] as tScore
FROM tblBasedata)
但不是输入零,这仍然是一个#Num!错误,因为我相信它正在评估 IIF 函数的两个部分,如果真或假部分评估为错误,则返回错误。
所以我的问题是,有没有办法处理#Num! SQL 在运行时出现错误,还是有更好的方法来解决这个问题?
【问题讨论】: