SQL Server Developer Support チーム
須田 恵
こんにちは!
今日は比較的よくあるお問い合わせについてご紹介い��します。
SSRS では、メインレポートのリンクをクリックすると詳細レポートが開くよう設定することが可能です。
出展:詳細レポート (レポート ビルダーおよび SSRS)
テキストボックスや画像などのプロパティ画面にて [アクション] をクリックし、[レポートに移動する] ラジオボタンを選択し、移動先のレポートを指定します。
参考情報:レポートへのドリルスルー アクションの追加 (レポート ビルダーおよび SSRS)
上記設定では、メインレポートのリンクをクリックすると、詳細レポートは同一ウィンドウで開かれます。
リンクを右クリック [新しいウィンドウで開く] を選択しても、空白のページが開くのみです。
メインレポートと詳細レポートを別ウィンドウにして、メインレポートもそのまま参照できるようにしたい場合はどうすればよいでしょうか?
別ウィンドウで開くには?
アクションの設定を [レポートに移動する] から、[URL に移動する] に変更し、かつ JavaScript を組み合わせることで実現可能です。
1) テキストボックスのプロパティ画面にて [アクション] をクリックし、[URL に移動する] ラジオボタンを選択します。
2) [fx] ボタンをクリックし、[式] ウィンドウを表示し設定します。 基本的な構文は下記です。
="javascript:void(window.open('"+ <移動先のレポートのURL > + "','_blank'))"
※ 記述例
詳細レポートの名称 : Report2
="javascript:void(window.open('"+ Globals!ReportServerUrl+"?/"+ "Report2" + "&rs:Command=Render" + "','_blank'))"
パラメーターを渡す場合 (メインレポート側の MainParam パラメーター値を詳細レポート側の SubPram パラメーターに渡す)
="javascript:void(window.open('"+ Globals!ReportServerUrl+"?/"+ "Report2" + "&rs:Command=Render&" + "SubPram=" +Parameters!MainParam.Value+ "','_blank'))"
注意点
[URL に移動する] で指定するフォルダ名・レポート名・パラメーター名に日本語が含まれる場合、「パスが無効です」というエラーが発生する際には、escape 関数で URL をエンコードすることでエラー回避可能です。例えば下記のように指定します。
例)
="javascript:void(window.open('"+ Globals!ReportServerUrl+"?/'"+ "+escape('フォルダー1/レポート1')+" + "'&rs:Command=Render&" + "'+escape('パラメーター1')+'=" + Parameters!Parameter1.Value + "','_blank'))"
※「'」や「"」の扱いがやや複雑になりますのでご注意ください。
以上です。参考になりましたら幸いです。