19

除算式を持つ Tablix ボックスがあります。ゼロまたはヌルで割る#Errorと、レポートに表示されます。IIF私はステートメントを作成しようとし、静的な値でテストしました。これにより、構文が正しいことが確認されましたが、レポートにまだエラーが表示されます。

レポートのプレビュー

=IIF(Sum(Fields!CY_Dollars.Value)=0, 0, (Sum(Fields!CY_Dollars.Value) - Sum(Fields!PY_Dollars.Value))/(Sum(Fields!PY_Dollars.Value)))

したがって、当年度のドルから前年度のドルを引き、その合計を前年度のドルで割って、変化率を求めます。これに私が得ていないトリックはありますか?!

4

3 に答える 3

56

ゼロ除算条件を処理する関数をレポート コードに追加できます。これにより、複数のセルでの実装が少し簡単になります。

Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
  Return 0
Else
  Return Dividend/Divisor
End If
End Function 

次に、次のようにセルでこれを呼び出すことができます。

=Code.Divider(Fields!FieldA.Value, Fields!FieldB.Value)
于 2013-10-07T03:55:09.183 に答える
13

IIFSSRS が実際にステートメントを短絡しないという問題に遭遇しているのではないかと思います。0をチェックしていても、ゼロ除算エラーが発生します。

次のようなものを試してください:

=IIf(Sum(Fields!PY_Dollars.Value) = 0, 0, Sum(Fields!CY_Dollars.Value) - Sum(Fields!PY_Dollars.Value))
  / IIf(Sum(Fields!PY_Dollars.Value) = 0, 1, Sum(Fields!PY_Dollars.Value))

2 つのIIfステートメントを使用するということは、式0/1when = 0 を使用してエラーを回避し、 0Sum(Fields!PY_Dollars.Value)を返すことを意味します。

Sum(Fields!PY_Dollars.Value) = 0また、上記の式は Checkingですが、あなたの式は Checking であることに注意してSum(Fields!CY_Dollars.Value) = 0ください。ここでは、分母にゼロのチェックが必要です。

于 2013-10-04T20:40:45.573 に答える