0

レポートのフィールドを評価しようとしましたが、毎回失敗します:

= IIf(Fields!lectcrs_hrs.IsMissing,
      Round(Fields!lectcrs_fee.Value * "1.00", 2),
      Round(Fields!lectcrs_fee.Value * Fields!lectcrs_hrs.Value, 2))

Fields!lectcrs_hrs.IsMissing = true私のフィールドが空の場合、2番目のケースRound(Fields!lectcrs_fee.Value * Fields!lectcrs_hrs.Value, 2)に欠落しているフィールドが含まれている理由がわかりFields!lectcrs_hrsました。最初のケースを通過した場合、2番目のケースをチェックするのはなぜですか!

この問題を解決するには?

4

1 に答える 1

3

あなたが探している動作は「短絡」と呼ばれますが、残念ながら、Visual Basic の IIf 関数はそれを提供しません。その理由は、IIf() が三項関数であるため、渡されたすべての引数が関数呼び出しが発生する前に評価されるためです。一方、三項演算子(VB 9+ の If()) は、条件付き評価をサポートしています。ただし、If() 演算子を SSRS の式の一部として使用できるとは思いません。

実行時に存在するかどうかわからないフィールドを使用しようとしているという事実を考慮して、適切なチェックと戻り値を処理するカスタム関数をレポートに作成することをお勧めします。参考までに、同じシナリオを扱っているこのブログ投稿をご覧ください。

于 2012-09-12T14:06:02.600 に答える