Передача параметра через службу отчетов URL-адресов в sql-сервер
Я пытаюсь передать параметр через URL-адрес в SSRS и, похоже, не работает!
Я пытаюсь передать userId (string) через url, который будет передан в базу данных и использован по запросу.
базовый url:
http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport
попробовал это, но он не работает:
http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred
Любые идеи
Ответы
Ответ 1
Как и то, что сказал Шираз, попробуйте что-то вроде этого:
http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'
Обратите внимание, что путь будет работать только в том случае, если вы находитесь в одной папке. Когда я должен это сделать, я просто просматриваю отчет с использованием пути к серверу отчетов ( "отчеты" - это диспетчер отчетов) и копирует URL-адрес, а затем добавляет &<ParameterName>=<value>
в конец.
Ответ 2
У меня был тот же вопрос и многое другое, и хотя этот поток старый, он по-прежнему хорош, поэтому в резюме для SSRS 2008R2 я нашел...
Ситуации
- Вы хотите использовать значение из URL-адреса для поиска данных
- Вы хотите отобразить параметр из URL-адреса в отчете
- Вы хотите передать параметр из одного отчета в другой отчет
Действия
Если применимо, не забудьте заменить Отчеты/Страницы/Отчет .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
В запросе свойств набора данных отчета: SELECT stuff FROM view WHERE User = @UserID
В отчете установите значение выражения в [UserID] (или = Fields! UserID.Value)
Имейте в виду, что если в отчете есть несколько параметров, вам может потребоваться включить все параметры в URL-адрес, даже если он пуст, в зависимости от того, как написан ваш запрос на набор данных.
Чтобы передать параметр с помощью Action = Перейти к 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: с помощью этого метода); однако, я полагаю, было бы возможно прочитать или установить флажок "Приглашенный пользователь", как показано в отчетах о параметрах sever, с помощью настраиваемого кода в отчете.)
Для справки /=% 2f
Ответ 3
Я сам решил эту проблему. Я нашел решение на MSDN:
http://msdn.microsoft.com/en-us/library/ms155391.aspx.
Формат в основном
http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
Ответ 4
Попробуйте изменить "Отчеты" на "ReportServer" в своем URL-адресе
Ответ 5
Попробуйте передать несколько значений через url:
/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF
Это должно работать.
Ответ 6
Я решил аналогичную проблему, передав значение доступного параметра в URL вместо метки этого параметра.
Например, у меня есть отчет с параметром с именем viewName, а предопределенные доступные значения для параметра: (метки/значения) - заказы/подзадачи, 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
Ответ 7
В соответствии с этой ссылкой вам также может потребоваться префикс вашего параметра с помощью & rp, если не используется синтаксис прокси-сервера
Ответ 8
Попробуйте изменить "Отчеты" на "ReportServer" в своем URL-адресе.
Для этого просто войдите в это 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/