2012-04-13 13 views
3

メインレポートに渡されるパラメータに基づいてサブレポートを表示/非表示にしたいという問題があります。パラメータに基づいてSSRSでサブレポートを非表示にする(ストアドプロシージャを実行しない)

サブレポートを表示/非表示にする式を使用して非表示プロパティを設定できますが、SQLプロファイラを使用して見つかったのは、サブレポートが保存されていても隠された

ストアドプロシージャ自体を変更する以外に、これを回避する方法を知っている人はいませんか。 もしそうでなければ、サブレポートが隠されていてもストアドプロシージャが実行される理由を知っている人はいませんか?

答えて

7

SSRSの非表示のレポート要素は引き続き処理されます。隠しプロパティは、単に出力に表示されるかどうかを決定します。手順は条件付きでのみ実行されることを保証する

一つの方法は、式に、データセット内のストアドプロシージャの名前を変更するだろう - のようなもの:

=iif(Parameters!RunMyDataset.Value="Y","sp_MyDataSet","sp_Dummy") 

- sp_Dummyは、そのストアドプロシージャであります最小限の処理(例えば、SELECT NULL)を実行します。

+0

ダミーspは元のspと同じ列を返す必要はありませんか? –

+0

@astander:そうしないと、BIDSでプレビューするときに、レポートで多数の警告が生成されます(ただしエラーは発生しません)。理想的には、(それらの警告の生成を防ぐために)ダミープロシージャに同じ列セットを生成することは理想的ですが、それは必須ではありません。 –

+0

これは、サブレポート/ spごとにダミーspを作成し、サブレポートごとに2つのSPを隠しておく必要があることを意味します。MSの決定の背後にある理由は、SPの実行を強制することだったのですか?とにかく、私はSPに可視性のために組み込まれた表示ロジックを持たせたくないので、何かを考えなければならないでしょう。 –

0
  1. メインレポートのサブレポートオブジェクトを右クリックし、[サブレポートの書式設定...]を選択します。フォーマットエディタが開きます。

  2. フォーマットエディタで[サブレポート]タブを選択します。

  3. "Suppress Blank Subreport"チェックボックスにチェックマークを付けます。

1

これを解決する方法があります。あなたの論点に基づいています。たとえば、4つのサブレポートがあり、page1〜page4という名前が付けられています。メインレポートでは、これら4つのページすべてにパラメータ「Investor_ID」の値が渡されます。メインレポートでは、4つのブール型パラメータを作成し、これらの4つのサブレポートを表示可能にするかどうかを制御するために、サブレポートの非表示プロパティを設定する必要があります。

たとえば、式=iif(Parameters!Page1.Value = true, false, trueを使用すると、パラメータpage1にtrueを選択すると、page1が表示されます。それ以外の場合は非表示になります。

次に、サブレポートの「サブレポートのプロパティ」でパラメータを設定する必要があります。

サブレポートが必要なパラメータInvestor_IDについては、値を選択して=IIF(Parameters!Page1.Value = true, Fields!Investor_ID.Value, nothing)を使用します。つまり、page1を非表示にすると、mainreportはサブレポートpage1に何も渡しません。その後、Page1は実行されず、Investor_IDパラメーターがヌルであるため、「エラー:サブレポートを表示できませんでした」と表示されます。しかし、そのサブレポートは隠します。したがって、page1は表示されません。

このようにして、隠しサブレポートの実行を制御できます。

関連する問題