私は、即時にINSERT INTO
クエリを構築するVBA関数を書いています。このクエリは、別のテーブルから選択される式に基づいてスコアを計算SQLにアクセス - 実行時のエラー処理
例えば式"[Cash]/[Sales]"
はのようなクエリにつながる:私は別のものを書き込もうとDIV/0エラーを回避するために、
INSERT INTO tblKPIScores
SELECT Employee, [Cash]/[Sales] as Score
FROM tblBasedata
式のどの部分(もしあれば)に除数が含まれているかを調べ、これを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のエラーが発生するか、この問題に近づくより良い方法がありますか?
こんにちはコスタス、答えに感謝を。私が持っている問題は、私が質問で与えた例の式は非常に単純ですが、他の数式の多くはもっと複雑であり、複数の除数を含んでいるということです。私はUDFを作成して、与えられた関数の除数を計算しようとしましたが、そうすることはできませんでした。そのため、実行時にエラーをキャッチすることを望んでいたのですが、可能かどうかわかりません。 – Leroy
わかりました。私はorelse divisionがエラーを投げるたびにゼロをチェックする必要があると信じています。 –