none
ゼロ演算の回避方法について RRS feed

  • 質問

  • 始めまして。ぃちゃんです。

    ゼロ演算の回避方法についての質問です。

    =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)

    2013年11月18日 9:31

回答

  • こんにちは、ぃちゃん さん。フォーラム オペレーターの星 睦美です。
    IS Kayano さんの返信が参考になったようですね。hihijiji さんからも返信がありますので、引き続き質問がありましたら返信いただければと思います。

    今回は私のほうでお二人の返信を[回答の候補に設定] させていただきました。これからもユーザー同士の情報交換がより活発になりますように、役立つ回答には ぃちゃん さんから[回答としてマーク] をお願いします。

    それでは今後ともMSDN フォーラムをお役立てください。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    • 回答としてマーク ぃちゃん 2013年11月22日 1:53
    2013年11月19日 4:39

すべての返信

  • 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
    2013年11月18日 11:07
  • 目的のゼロ演算が回避できました。

    早々のご教授有難う御座います。非常に助かりました。

    2013年11月19日 1:56
  • このページの下の方に
    式の例 (Reporting Services)

    「実行時の NULL 値または 0 の非表示」のカスタム コード例が載ってます。
    カスタム コード用のレポート定義を作って参照する方法もあるようですが、私は必要な時に書いちゃいます。
    綺麗じゃないですね…
    • 回答の候補に設定 星 睦美 2013年11月19日 4:28
    2013年11月19日 4:04
  • こんにちは、ぃちゃん さん。フォーラム オペレーターの星 睦美です。
    IS Kayano さんの返信が参考になったようですね。hihijiji さんからも返信がありますので、引き続き質問がありましたら返信いただければと思います。

    今回は私のほうでお二人の返信を[回答の候補に設定] させていただきました。これからもユーザー同士の情報交換がより活発になりますように、役立つ回答には ぃちゃん さんから[回答としてマーク] をお願いします。

    それでは今後ともMSDN フォーラムをお役立てください。


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    • 回答としてマーク ぃちゃん 2013年11月22日 1:53
    2013年11月19日 4:39