2

PDFで正しくレンダリングされるため、ヘッダーに動的データを表示するときにパラメーターを使用することを推奨する他の投稿を読みました。そのソリューションを実装しようとしていますが、問題が発生しました。パラメータに対してデータが返される場合は機能しますが、データが返されない場合はエラーがスローされます。これが私の設定です:

  • 隠れた
  • null値を許可する
  • 空白の値を許可する
  • 使用可能な値:クエリから
  • デフォルト値:クエリから

ヘッダーのテキストボックスの値は次のとおりです。

=IIf(IsNothing(Parameters![Report Parameter Name].Value), "", Parameters![Report Parameter Name].Value)

デフォルト値の行が返されない場合は、次のエラーが表示されます。

'[レポートパラメータ名]'パラメータに値がありません。

私はレポートサービスに慣れていないので、いくつかの大きな概念が欠けている可能性があります。私にとって、null値を許可する基準に適合するデータは返されません。

4

1 に答える 1

1

IsNothing を使用した場合や同様のゼロ除算の場合に IIF を使用する場合の問題は、IIF が言語構造ではなく、実際には関数であることです。したがって、パラメーターは関数を呼び出す前に評価されます。つまり、評価されるべきではないと思われる式が、実際には関数呼び出しの前に評価されます。

IF 式の true 部分と false 部分の両方が計算されるのはおかしいと思いますが、それを言語機能ではなく関数呼び出しと考えてください。言語のようなパスの短絡はありません。エラーは、関数を呼び出す前のすべてのパラメーターの計算にあります。

これをカスタム コード関数に置き換えて、同じ効果を得ることができます。したがって、次の行に沿って何か:

レポートの本文を右クリックし、[プロパティ] を選択します。[コード] タブをクリックし、次のコードを入力します。

Public Function GetParamVal(ByVal ParamVal) As String
    If IsNothing(ParamVal) Then
        Return ""
    Else 
        Return ParamVal
    End If
End Function

次に、ヘッダーで次のように呼び出します。

=Code.GetParamVal(Parameters!MyParam.Value)

(私はこれをテストするシステムの前にいませんが、アイデアを得る必要があります)

于 2011-05-20T02:31:16.823 に答える