2016-05-13 3 views
1

現在、Reporting Services 2014を使用しています。次のコードを使用して、共有サイト自体にJavaScriptのポップアップウィンドウを使用できます。このコードでは、 がRenderFormatがサイトで表示されているかどうか、または別の形式(Excel、Word、PDFなど)であるかどうかを評価するiifステートメントを使用してExcelリンクへのエクスポートを指定します。 iifステートメントは、ReportServerURLを適切なサイトに置き換える変数を使用します。サイト上のリンクを使用したり、サイトからExcelにエクスポートしたりするときは、すべて正常に機能します。SSRS予約購読ハイパーリンクが機能しない

問題は、レポートのExcelファイルを送信するスケジュールされたサブスクリプションを設定したときに発生します。 ReportSerURLは上記の状況とは異なります。予約購読のExcelファイルにhttp://gsp1/ReportServerhttp://gsp2/ReportServerという2つのサイトがあります。

これは、サイト上でハイパーリンクを使用し、Excelからサイトにエクスポートするために現在使用しているコードです。スケジュールされたサブスクリプションファイルに対処するためのロジックを組み込むこともできますか?

SSRS URLアクション(以下の変数を使用)

=iif(
(Globals!RenderFormat.Name = "RPL"), 
"javascript:void(window.open('"+ Variables!RxDrill.Value + "&rv:ParamMode=Hidden&rv:Toolbar=None&rv:HeaderArea=None&rp:StoreKey=" + Fields!StoreKey.Value.ToString + " &rp:RxNumber=" + Fields!RX.Value.ToString + "&rp:RefillNumber=" + Fields!RefillNumber.Value.ToString + "', 'RXOVERVIEW','width=1335,height=450,location=no'))", 
Variables!RxDrill.Value + "&rp%3aStoreKey=" & Fields!StoreKey.Value & "&rp%3aRxNumber=" & Fields!RX.Value & "&rp%3aRefillNumber=" & Fields!RefillNumber.Value & "&rs%3aParameterLanguage=") 

変数

=Replace(Globals!ReportServerUrl,"/_vti_bin","/_layouts/15") + "/RSViewerPage.aspx?rv:RelativeReportUrl=/SSRS%20Library/Rx Transaction Detail.rdl" 

これは私が現在のサブスクリプションでリンクを開こうとしますエラーでメールファイルを優れています。 enter image description here

は、私は[& ReportServerUrl]テキストボックスを落とし、それがブラウザやExcelへのエクスポート中にあるように、パスは定期的なサブスクリプションで同じではないことがわかりました。サブスクリプションが使用する2つのReportServerURLがあることがわかりました。 http://gsp1/ReportServerまたはhttp://gsp2/ReportServerである。ブラウザでは常にhttps://abc.myinfocenter.net/_vti_bin/ReportServerですが、上記の変数コードからわかるように、_vti_binは置き換えられます。

+0

ブラウザでレポートを表示しているときに、レポート内のリンクが正しいドリルダウンレポートを指し示し、目的のレポートを正しくレンダリングしているかどうかを確認してください。サブスクリプションを介してExcelバージョンのレポートを受信すると、レポートのリンクが正しく機能しません。 Excelファイルでこれらのリンクをクリックすると、どうなりますか?どのようなエラーが出ますか?この情報であなたの質問を修正してください。 –

+0

これは間違いなく、リンクはブラウザでうまく動作し、Excelにレポートをエクスポートするときも同様に機能します。問題は、サブスクリプションとしてExcelファイルを受け取ったときです。私はコメントにスクリーンショットを置くことができないので、私の質問を修正して行くでしょう – Istaley

答えて

2

問題は、sharepoint経由でレポートを読み込むときに、Globals!ReportServerUrl値を使用して共有ポイントサーバー情報を取得していることにあります。ただし、別のSSRSサーバーでのサブスクリプションでは、サーバーがサブスクリプションを生成する別のサーバー値を取得しています。 SharePointは、それがどのサーバー上にあるかを認識しており、SharePointサイト経由でレポートにアクセスする際にSSRSに通知することができます。しかし、SSRSサーバー上で直接レポートを生成する場合、SSRSサーバーはSharePointサイトが存在するかどうかわかりません。

これを解決するには、SSRSサーバーにSharePointサイトのURLを伝える必要があります。 SharePoint URLを変数の式や他の場所にハードコードすることはできますが、それは維持するのが少し難しくなります。

  1. SharePointURLと呼ばれるレポートに新しいパラメータを作成します。私は、保守少し簡単に、より透明性が行う以下の方法でこの問題を解決することをお勧めします。デフォルトの値をhttps://abc.myinfocenter.net/_vti_bin/ReportServerに設定するか、レポートがブラウザで正しく生成されたときの値を設定します。これをパラメータとして実行する理由は、SharePointサイトを変更する必要がある場合には、管理しやすくするためです。このパラメータを非表示または内部に設定します。

  2. 変数の式にSharePointURLパラメータを組み込むように変更します。

新しい変数式:

=Replace(IIF(Globals!RenderFormat.Name = "RPL",Globals!ReportServerUrl,Parameters!SharePointURL.Value),"/_vti_bin","/_layouts/15") + "/RSViewerPage.aspx?rv:RelativeReportUrl=/SSRS%20Library/Rx Transaction Detail.rdl" 

うまくいけば、あなたの問題を解決します。

+0

あなたの迅速な対応に感謝します。私は最初、(ブラウザで)ポップアップウィンドウにjavascriptを使用するか、Excelへのエクスポートから新しいタブに移動するかを決定するために、過去にパラメータを作成しようとしました。この新しいパラメータは、サブスクリプションのスケジューリング時にエラーを発生申し訳ありませんが、私はエラーの説明を手で覚えていません。私はそのコードを変更して変数にすることになりました。あなたが上記のことをパラメータとしてではなく、別の変数として行うことができなかった理由はありますか? – Istaley

+0

私は実際には変数を使ったことはありませんが、あなたができると思います。隠しパラメータにはデフォルト値は必要ありません。ただし、デフォルト値がある場合は、サブスクリプションが使用するものです。さらに、非表示のパラメータの場合、サブスクリプションで値を変更するオプションが提供されるとは思われません。 –

+0

残念ながら、RenderFormatは変数として使用することはできません。 「レポートbodyの変数式は、グローバル変数RenderFormatを参照していますが、このタイプのレポート項目式には有効ではありません。また、同じSSRSソリューションを2つの別々のプロダクションサイトでは、abcサイトにdefサイトもあるだけでなく、 – Istaley

関連する問題