Передача параметра через URL в службу отчетов SQL Server
Я пытаюсь передать параметр через URL в SSRS, и он не работает!
Я пытаюсь передать userId (строку) через URL, который будет передан в базу данных и используется запросом.
базовый URL: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport
пробовал это, но это не работает: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred
Есть идеи
10 ответов
Как и то, что сказал Шираз, попробуйте что-то вроде этого:
http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'
Обратите внимание, что путь будет работать, только если вы находитесь в одной папке. Когда мне нужно сделать это, я просто перехожу к отчету, используя путь к серверу отчетов ("отчеты" - это менеджер отчетов), и копирую URL, затем добавляю &<ParameterName>=<value>
к концу.
У меня был тот же вопрос и больше, и хотя эта ветка старая, она все еще хорошая, поэтому в итоге по SSRS 2008R2 я нашел...
Ситуации
- Вы хотите использовать значение из URL для поиска данных
- Вы хотите отобразить параметр из URL в отчете
- Вы хотите передать параметр из одного отчета в другой отчет
действия
Если применимо, обязательно замените Reports/Pages/Report.aspx?ItemPath= на ReportServer?, Другими словами: вместо этого:
http://server/Reports/Pages/Report.aspx?ItemPath=/ReportFolder/ReportSubfolder/ReportName
Используйте этот синтаксис:
http://server/ReportServer?/ReportFolder/ReportSubfolder/ReportName
Добавьте параметры в отчет и установите их как скрытые (или видимые, если действие пользователя разрешено, хотя имейте в виду, что при изменении параметра отчета URL-адрес не будет изменяться в зависимости от обновленной записи).
Прикрепите параметры к URL с помощью & ParameterName = Value
На параметры можно ссылаться или отображать в отчете, используя @ParameterName, независимо от того, установлены они в отчете или в URL
Чтобы скрыть панель инструментов, где отображаются параметры, добавьте & rc: Toolbar = false к URL-адресу ( ссылка)
Собрав все это вместе, вы можете запустить URL со встроенными значениями или вызвать это как действие из одного отчета и прочитать другим отчетом:
http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=ABC123&rc:Toolbar=false
В запросе к свойствам набора данных отчета: ВЫБЕРИТЕ материал из представления ГДЕ Пользователь = @UserID
В отчете установите значение выражения в [UserID] (или = Fields! UserID.Value)
Помните, что если в отчете несколько параметров, вам может потребоваться включить в URL все параметры, даже если они пустые, в зависимости от того, как написан запрос к набору данных.
Чтобы передать параметр с помощью Action = Go to URL, установите выражение в:
="http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID="
&Fields!UserID.Value
&"&rc:Toolbar=false"
&"&rs:ClearSession=True"
Убедитесь, что после выражения есть пробел, если за ним следует & (разрыв строки недостаточен). Не требуется места перед выражением. Этот метод может передавать параметр, но не скрывает его, поскольку он виден в URL.
Если вы не включите & rs: ClearSession = True, то отчет не будет обновляться до тех пор, пока кэш сеанса браузера не будет очищен.
Чтобы передать параметр с помощью Action = Перейти к отчету:
- Укажите отчет
- Добавьте параметры для запуска отчета
- Добавьте параметры, которые вы хотите передать (параметры должны быть определены в целевом отчете, поэтому, насколько мне известно, вы не можете использовать специфичные для URL команды, такие как панель инструментов rc:, используя этот метод); однако, я полагаю, что можно было бы прочитать или установить флажок "Запросить пользователя", как видно из параметров отчета сервера, с помощью специального кода в отчете.)
Для справки, / =% 2f
Я только что решил эту проблему сам. Я нашел решение на MSDN: http://msdn.microsoft.com/en-us/library/ms155391.aspx.
Формат в основном
http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
Попробуйте передать несколько значений через URL:
/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF
Это должно работать.
Я решил аналогичную проблему, передав значение доступного параметра в URL-адресе вместо метки параметра.
Например, у меня есть отчет с параметром с именем viewName и предопределенными доступными значениями для параметра: (метки / значения) orders/sub_orders, orderDetail/sub_orderDetail, product/sub_product.
Чтобы вызвать этот отчет с URL-адресом для автоматического отображения параметра =product, необходимо указать значение, а не метку.
Это было бы неправильно: http://server/reportserver?/Data+Dictionary/DetailedInfo&viewName=product&rs:Command=Render
Это правильно: http://server/reportserver?/Data+Dictionary/DetailedInfo&viewName=sub_product&rs:Command=Render
Используйте URL-адрес, указанный ниже, чтобы открыть отчет в новом окне с динамическими параметрами.
="javascript:void(window.open('http://Servername/ReportServer?/Foldername/Reportname&rs:Commnd=Render¶meter1=" & Fields!A.Value & "¶meter2=" & Fields!B.Value & "'))"
По этой ссылке вам также может потребоваться префикс вашего параметра с &rp, если вы не используете прокси-синтаксис
Http ://desktop-qr277sp/Reports01/report/Reports/reportName?Log%In%Name=serverUsername¶mName=value
Передать параметр в отчет с аутентификацией сервера
Попробуйте изменить "Отчеты" на "ReportServer" в вашем URL. Для этого просто доступ к этому http://host/ReportServer/
и оттуда вы можете перейти на страницы отчета. Там добавьте ваши parmaters, как это&<parameter>=<value>
Для более подробной информации: