Передача параметра через 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 я нашел...

Ситуации

  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-адрес не будет изменяться в зависимости от обновленной записи).

Прикрепите параметры к 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>

Попробуйте изменить "Отчеты" на "ReportServer" в вашем URL

Попробуйте передать несколько значений через 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&parameter1=" & Fields!A.Value & "&parameter2=" & 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>

Для более подробной информации:

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/

Другие вопросы по тегам