トップ回答者
ゼロ演算の回避方法について

質問
-
始めまして。ぃちゃんです。
ゼロ演算の回避方法についての質問です。
=Iif(ReportItems(“合計客数”).Value=0,True,False) この場合は”0”の時は”True”以外は”False”がセットされます
=IIf(ReportItems("合計客数").Value=0,0,(ReportItems("合計金額").Value/100)) この場合は”0”の時は”0”以外は計算値がセットされます
ReportItems(“合計客数”).Valueには"0"が入っていると想定します
同じでーたを使って、下記の様に変数÷変数に変更した場合に”0”以外は計算値がセットされますが”0”の時#エラーとなります。
=IIf(ReportItems("合計客数").Value=0,0,(ReportItems("合計金額").Value/ReportItems("合計客数").Value))
=Iif(RunningValue(Fields!合計_客数.Value,sum,"営業日")=0,0,ReportItems(“合計金額”).Value/ReportItems(“合計客数”).Value)
独自で調べてはいるのですがなかなか解決にはいたりません。
どうかお知恵をお貸しください。よろしくお願いします。
バージョン情報:ReportBuilder 2.0(10.0.1600.60)
回答
-
こんにちは、ぃちゃん さん。フォーラム オペレーターの星 睦美です。
IS Kayano さんの返信が参考になったようですね。hihijiji さんからも返信がありますので、引き続き質問がありましたら返信いただければと思います。今回は私のほうでお二人の返信を[回答の候補に設定] させていただきました。これからもユーザー同士の情報交換がより活発になりますように、役立つ回答には ぃちゃん さんから[回答としてマーク] をお願いします。
それでは今後ともMSDN フォーラムをお役立てください。フォーラム オペレーター 星 睦美 - MSDN Community Support
- 回答としてマーク ぃちゃん 2013年11月22日 1:53
すべての返信
-
IIF関数の【Trueの値】と【Falseの値】の評価のタイミングの問題です。
SSRSのIIFでは、最初の引数でどちらの値を評価すべきか判断する前に、
【Trueの値】と【Falseの値】双方を評価してしまいます。
このため、最初の引数でTrueとなる場合でも、False時の値も評価しようとして、
0割り算のエラーにより【式全体がエラーである】と判断されてしまいます。
ここの仕様は何とかして欲しいところではありますが、現状、【そうなっている】というのが実情のようです。
私の場合は、(醜い方法ではありますが、)分子分母を別々にIIF分にかけて
=IIf(ReportItems("合計客数").Value=0,0,(ReportItems("合計金額").Value/ReportItems("合計客数").Value))
↓↓↓↓↓↓
=IIf(ReportItems("合計客数").Value=0,0,ReportItems("合計金額").Value)
/IIf(ReportItems("合計客数").Value=0,1,ReportItems("合計客数").Value)
とすることで対応しています。
もっと綺麗に解決する方法があれば、どなたかご教授いただきたいです。---------------------------------
Infospire Kayano- 回答の候補に設定 星 睦美 2013年11月19日 4:28
-
こんにちは、ぃちゃん さん。フォーラム オペレーターの星 睦美です。
IS Kayano さんの返信が参考になったようですね。hihijiji さんからも返信がありますので、引き続き質問がありましたら返信いただければと思います。今回は私のほうでお二人の返信を[回答の候補に設定] させていただきました。これからもユーザー同士の情報交換がより活発になりますように、役立つ回答には ぃちゃん さんから[回答としてマーク] をお願いします。
それでは今後ともMSDN フォーラムをお役立てください。フォーラム オペレーター 星 睦美 - MSDN Community Support
- 回答としてマーク ぃちゃん 2013年11月22日 1:53