1
我写了一个VBA函数,它在运行中生成INSERT INTO
查询。这个查询计算基于公式的得分是从另一个表访问SQL - 在运行时处理错误
例如公式"[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,可以可靠地为任何给定的公式返回除数(S)。
我现在想是这样的:
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在运行时出错,还是有更好的方法来解决这个问题?
嗨科斯塔斯,寻找答案感谢。我的问题是,虽然我在问题中给出的示例公式非常简单,但其他许多公式要复杂得多,并且包含多个除数。我确实试图创建一个UDF来找出任何给定函数的除数,但无法这样做。这就是为什么我希望只是在运行时发现错误,但我不确定这是否可能。 – Leroy
好吧,我明白了。我相信每当orelse部门会发出错误时,您都需要检查零。 –