Reputation: 25631
I'm trying to pass a userId (string) in the URL which will be passed to the database and used by a query in SSRS.
base URL:
http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport
I tried this, but it doesn't work:
http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred
Any ideas?
Upvotes: 48
Views: 184885
Reputation:
According to Microsoft, the format basically is:
http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
Upvotes: 8
Reputation: 831
First, be sure to replace Reports/Pages/Report.aspx?ItemPath=
with ReportServer?
. In other words, instead of this:
http://server/Reports/Pages/Report.aspx?ItemPath=/ReportFolder/ReportSubfolder/ReportName
Use this syntax:
http://server/ReportServer?/ReportFolder/ReportSubfolder/ReportName
Parameters can be referenced or displayed in a report using @ParameterName
, whether they're set in the report or in the URL. You can attach parameters to the URL with &ParameterName=Value
.
To hide the toolbar where parameters are displayed, add &rc:Toolbar=false
to the URL (reference).
Putting that together, you can run a URL with embedded values, or call this as an action from one report and read by another report:
http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=ABC123&rc:Toolbar=false
In the report's dataset properties query: SELECT stuff FROM view WHERE User = @UserID
In the report, set the expression value to [UserID]
(or =Fields!UserID.Value
)
Keep in mind that if a report has multiple parameters, you might need to include all parameters in the URL, even if blank, depending on how your dataset query is written. That means repeating the parameter name for multiple values of the same parameter, too.
To pass a parameter using Action = Go to URL, set expression to:
="http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID="
&Fields!UserID.Value
&"&rc:Toolbar=false"
&"&rs:ClearSession=True"
Be sure to have a space after an expression if followed by & (a line break is isn't enough). No space is required before an expression. This method can pass a parameter but does not hide it as it is visible in the URL.
If you don't include &rs:ClearSession=True
then the report won't refresh until browser session cache is cleared.
To pass a parameter using Action = Go to report:
rc:toolbar
using this method); however, I suppose it would be possible to read or set the Prompt User checkbox, as seen in reporting sever parameters, through custom code in the report)For reference, see this page on URL encoding, e.g. / = %2f
Upvotes: 62
Reputation: 15
Use the URL, mentioned below to open the report in a new window with dynamic parameters.
="javascript:void(window.open('http://Servername/ReportServer?/Foldername/Reportname&rs:Commnd=Render¶meter1=" & Fields!A.Value & "¶meter2=" & Fields!B.Value & "'))"
Upvotes: 0
Reputation: 380
http://desktop-qr277sp/Reports01/report/Reports/reportName?Log%In%Name=serverUsername¶mName=value
Pass parameter to the report with server authentication
Upvotes: -2
Reputation: 467
Try changing "Reports" to "ReportServer" in your url.
For that just access this http://host/ReportServer/
and from there you can go to the report pages. There append your parmaters like this
&<parameter>=<value>
For more detailed information:
Upvotes: -1
Reputation: 11
I solved a similar problem by passing the value of the available parameter in the URL instead of the label of the parameter.
For instance, I have a report with a parameter named viewName and the predefined Available Values for the parameter are: (labels/values) orders/sub_orders, orderDetail/sub_orderDetail, product/sub_product.
To call this report with a URL to render automatically for parameter=product, you must specify the value not the label.
This would be wrong:
http://server/reportserver?/Data+Dictionary/DetailedInfo&viewName=product&rs:Command=Render
This is correct: http://server/reportserver?/Data+Dictionary/DetailedInfo&viewName=sub_product&rs:Command=Render
Upvotes: 1
Reputation: 1336
As well as what Shiraz said, try something like this:
http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'
Note the path would only work if you are in a single folder. When I have to do this I simply browse to the report using the reportserver path ("reports" is the report manager) and copy the url then add &<ParameterName>=<value>
to the end.
Upvotes: 49
Reputation: 41
Try passing multiple values via url:
/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF
This should work.
Upvotes: 4