web-dev-qa-db-ja.com

URLを介してSQLサーバーレポートサービスにパラメーターを渡す

URLを介してSSRSにパラメーターを渡そうとしていますが、機能していないようです!

データベースに渡され、クエリで使用されるURLを介してuserId(文字列)を渡そうとしています。

ベースURL: http://blah/Reports/Pages/Report.aspx?ItemPath = MyReport

これを試してみましたが、機能しません: http://blah/Reports/Pages/Report.aspx?ItemPath = MyReport&UserId = fred

何か案は

39
AwkwardCoder

シラーズが言ったことに加えて、次のようなものを試してください。

http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'

パスは、単一のフォルダーにいる場合にのみ機能することに注意してください。これを行う必要がある場合は、reportserverパス(「レポート」はレポートマネージャー)を使用してレポートを参照し、URLをコピーしてから&<ParameterName>=<value> 最後まで。

46
Mozy

私は同じ質問などをしましたが、このスレッドは古いですが、まだ良いものですので、SSRS 2008R2の要約では...

状況

  1. URLの値を使用してデータを検索したい
  2. レポートのURLからパラメーターを表示したい
  3. あるレポートから別のレポートにパラメーターを渡したい

アクション

該当する場合は、Reports/Pages/Report.aspx?ItemPath =ReportServer?。言い換えれば、これの代わりに:

http://server/Reports/Pages/Report.aspx?ItemPath=/ReportFolder/ReportSubfolder/ReportName

次の構文を使用します。

http://server/ReportServer?/ReportFolder/ReportSubfolder/ReportName

レポートにパラメーターを追加し、非表示(またはユーザーアクションが許可されている場合は表示)に設定します。ただし、レポートパラメーターが変更される間、URLはnot更新されたエントリに基づいて変更します)。

&ParameterName = Valueを使用してパラメーターをURLに添付する

パラメータは、レポートまたはURLのどちらで設定されていても、@ ParameterNameを使用してレポートで参照または表示できます。

パラメーターが表示されるツールバーを非表示にするには、URLに&rc:Toolbar = falseを追加します( reference

これらをすべてまとめると、値が埋め込まれたURLを実行したり、あるレポートからアクションとして呼び出して別のレポートで読み取ったりすることができます。

http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=ABC123&rc:Toolbar=false

レポートデータセットプロパティクエリ:SELECT stuff FROM view WHERE User = @UserID

レポートで、式の値を[UserID](または= Fields!UserID.Value)に設定します

レポートに複数のパラメーターがある場合、データセットクエリの記述方法によっては、空白であってもすべてのパラメーターをURLに含める必要がある場合があることに注意してください。

Action = Go to URLを使用してパラメーターを渡すには、expressionを次のように設定します。

="http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID="
 &Fields!UserID.Value 
 &"&rc:Toolbar=false"
 &"&rs:ClearSession=True"

&が後に続く場合は、式の後に必ずスペースを入れてください(改行だけでは不十分です)。式の前にスペースは必要ありません。このメソッドはパラメーターを渡すことができますが、URLに表示されるため、パラメーターを非表示にしません。

&rs:ClearSession = Trueを含めない場合、ブラウザセッションキャッシュがクリアされるまでレポートは更新されません。

Action = Go to reportを使用してパラメーターを渡すには:

  • レポートを指定する
  • レポートを実行するパラメーターを追加します
  • 渡すパラメーターを追加します(パラメーターは宛先レポートで定義する必要があるため、私の知る限り、このメソッドを使用してrc:toolbarなどのURL固有のコマンドを使用することはできません)。ただし、レポートのカスタムコードを使用して、レポートサーバーパラメーターに表示されるように、[ユーザーに確認]チェックボックスを読み取ったり設定したりできると思います。

参考のため、 / =%2f

52
snyderj

私はこの問題を自分で解決しました。 MSDNで解決策を見つけました: http://msdn.Microsoft.com/en-us/library/ms155391.aspx

形式は基本的に

http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
8
Izhar Lotem

URLの「レポート」を「レポートサーバー」に変更してみてください

6
Shiraz Bhaiji

URL経由で複数の値を渡してみてください:

/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF

これは動作するはずです。

3
Matthew Burrows

パラメータのラベルの代わりにURLで使用可能なパラメータの値を渡すことで、同様の問題を解決しました。

たとえば、viewNameという名前のパラメーターを持つレポートがあり、パラメーターの定義済みの利用可能な値は次のとおりです:(ラベル/値)orders/sub_orders、orderDetail/sub_orderDetail、product/sub_product。

Parameter = productに対して自動的にレンダリングするURLを使用してこのレポートを呼び出すには、ラベルではなく値を指定する必要があります。
これは間違っています: http:// server/reportserver?/ Data + Dictionary/DetailedInfo&viewName = product&rs:Command = Render

これは正しいです: http:// server/reportserver?/ Data + Dictionary/DetailedInfo&viewName = sub_product&rs:Command = Render

1
RonG

このように link プロキシ構文を使用しない場合は、パラメーターの前に&rpを付ける必要があります

0
majjam

URLの「レポート」を「ReportServer」に変更してみてください。そのためには、このhttp://Host/ReportServer/にアクセスするだけで、そこからレポートページにアクセスできます。この&<parameter>=<value>のようにパラメーターを追加します

詳細については:

http://dobrzanski.net/2008/08/11/reporting-services-problem-with-passing-parameters-directly-in-the-url/

https://www.mssqltips.com/sqlservertip/1336/pass-parameters-and-options-with-a-url-in-sql-reporting-services/

0
SHIBIN