0

次のことをしようとして問題が発生しています。キャプション内に iif ステートメントを組み込もうとしています。これは、ラベルで評価される現在の行です。

=round(@ Data.rp_TATStatAtBenchmark~ / @ Data.rp_TATStatCount~ * 100) + "%"

@ Data.rp_TATStatCount = 0 および @ Data.rp_TATStatAtBenchmark = 0 の場合にもエラーを処理するために、次のように変更しました (何らかの理由で、2 番目の値が 0 の場合、"0 %".とにかく、これは私が書こうとしているものです:

=IIf((@ Data.rp_TATStatAtBenchmark~ = "0" OR @ Data.rp_TATStatCount~ = "0"),"0%", round(@ Data.rp_TATStatAtBenchmark~ / @ Data.rp_TATStatCount~ * 100) + "%" )

しかし、それは機能していません。どんな助けでも大歓迎です。ありがとうございました!

4

1 に答える 1

0

@Data.rp_TATStatCount~ 値が 0 の場合、「???」の結果が表示される理由は次のとおりです。ゼロ除算は意味のない数式であるためです(「未定義」)。これは常に未定義の '???' として返されます。トークン変数は単純に置き換えられるため、iif() ステートメントを使用している場合でも、式の有効性が引き続きチェックされます。

ゼロ除算の例外を作成する場合は、rp_TATStatCount = 0 の場合をチェックする計算を提供し、それをゼロ以外の整数に置き換えるか、別の列名を使用する必要があります。最善の方法は、ゼロをチェックする 2 つ目の計算列 (iif() ステートメント) を作成し、この新しく作成された列を使用して round() 関数を実行することです。

既存の列名を使用した静的データレイヤー内の簡単な例を次に示します。

<DataLayer Type="Static" ID="dlStatic">
 <StaticDataRow rp_TATStatAtBenchmark="0" rp_TATStatCount="0" />
   <CalculatedColumn Formula="iif(@Data.rp_TATStatCount~=0, 1, @Data.rpTATStatCount~)" ID="StatCount2" />
   <CalculatedColumn Formula="iif(@Data.rp_TATStatAtBenchmark~ = &quot;0&quot; OR @Data.rp_TATStatCount~ = &quot;0&quot;, &quot;0%&quot;, round(@Data.rp_TATStatAtBenchmark~ / @Data.StatCount2~ * 100) + &quot;%&quot;)" ID="pctCol" />
</DataLayer>
于 2012-06-21T13:08:06.370 に答える