Вопрос по parameters, url, reportingservices-2005, reporting, reporting-services – Передача параметра через URL в службу отчетов SQL Server

39

Я пытаюсь передать параметр через URL в SSRS, и он, похоже, не работает!

Я пытаюсь передать userId (строку) через URL-адрес, который будет передан в базу данных и использован запросом.

базовый URL: HTTP: //blah/Reports/Pages/Report.aspx ItemPath = MyReport

пробовал это, но это не работает: ? Http: //blah/Reports/Pages/Report.aspx ItemPath = MyReport & амп; UserId = Фреда

Есть идеи

Проблема заключалась в том, что я пытался получить доступ к отчету через «статические» данные. url, этот urlonly показывает отчет, уже сгенерированный, он не 'делает' динамическим ' генерация отчета - если вы хотите это, вы должны использовать URL-адрес, например, «http: //» server & gt; /ReportServer/Pages/ReportViewer.aspx...' Как указано ниже. AwkwardCoder

Ваш Ответ

8   ответов
3

Попробуйте передать несколько значений через URL:

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

Это должно работать.

8

Я только что решил эту проблему сам. Я нашел решение на MSDN: http://msdn.microsoft.com/en-us/library/ms155391.aspx.

Формат в основном

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

Согласно этомуссылка на сайт вам также может понадобиться префикс вашего параметра с & amp; rp, если вы не используете прокси-синтаксис

1

Я решил аналогичную проблему, передав значение доступного параметра в URL-адресе вместо метки параметра.

Например, у меня есть отчет с параметром с именем viewName и предопределенными доступными значениями для параметра: (метки / значения) orders / sub_orders, orderDetail / sub_orderDetail, product / sub_product.

Чтобы вызвать этот отчет с URL-адресом для автоматического отображения параметра = product, необходимо указать значение, а не метку.
Это было бы неправильно: ? HTTP: // сервер / ReportServer / Data + словарь / DetailedInfo & амп; VIEWNAME = продукт & амп; RS: Command = Рендер

Это правильно: ? HTTP: // сервер / ReportServer / Data + словарь / DetailedInfo & амп; VIEWNAME = SUB_PRODUCT & амп; RS: Command = Рендер

0

Попробуйте изменить & quot; Отчеты & quot; на "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/

46

Как и то, что сказал Шираз, попробуйте что-то вроде этого:

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

Обратите внимание, что путь будет работать, только если вы находитесь в одной папке. Когда мне нужно сделать это, я просто перехожу к отчету, используя путь к серверу отчетов («отчеты» - это менеджер отчетов), и копирую URL, затем добавляю&<ParameterName>=<value> к концу.

Спасибо миллион: D
Большое спасибо! Это сработало.
Я понял это ... убедитесь, что строки не заключены, т. Е. Вместо & amp; ProjectName = "Неизвестно" должно быть & amp; ProjectName = Unknown
Что делать, если я хочу передать динамический параметр через что-то вроде @Model
@selectDistinct: Давно я знаю. Но я просто наткнулся на этот пост и хочу добавить, что для передачи динамического параметра вы просто добавляете другой параметр URL: например. & Quot; & амп; Модель = & л; значение & GT; & Quot ;. Не забывайте & amp; спереди. И последнее: если вы хотите запустить & quot; рендер & quot; немедленно добавьте команду & amp; rs: command = Render & quot; вариант. Здесь убедитесь, что для всех пользовательских параметров установлено значение по умолчанию. В противном случае команда Render игнорируется. (Я боролся с этим, т.к. хотел интегрировать отчет в приложение .NET, где весь код встроен в код, для непосредственного отображения отчета).
6

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

49

У меня был тот же вопрос и больше, и хотя эта ветка старая, она все еще хорошая, поэтому в итоге по SSRS 2008R2 я нашел ...

Situations

You want to use a value from a URL to look up data You want to display a parameter from a URL in a report You want to pass a parameter from one report to another report

Actions

Если применимо, обязательно заменитеReports/Pages/Report.aspx?ItemPath= сReportServer?, Другими словами: Вместо этого:

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

Используйте этот синтаксис:

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

Добавьте параметр (-ы) в отчет и установите его как скрытый (или видимый, если действие пользователя разрешено, хотя имейте в виду, что при изменении параметра отчета URL-адрес будетnot изменить на основе обновленной записи).

Прикрепите параметры к URL с помощью & amp; ParameterName = Value

На параметры можно ссылаться или отображать в отчете, используя @ParameterName, независимо от того, установлены ли они в отчете или в URL.

Чтобы скрыть панель инструментов, где отображаются параметры, добавьте & amp; 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"

Убедитесь, что после выражения есть пробел, если за ним следует & amp; (разрыв строки недостаточен). Не требуется места перед выражением. Этот метод может передавать параметр, но не скрывает его, поскольку он виден в URL.

Если вы не включили & amp; rs: ClearSession = True, то отчет не будет обновляться до тех пор, пока кэш сеанса браузера не будет очищен.

Чтобы передать параметр с помощью Action = Перейти к отчету:

Specify the report Add parameter(s) to run the report Add parameter(s) you wish to pass (the parameters need to be defined in the destination report, so to my knowledge you can't use URL-specific commands such as 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.)

Для справки,/ =% 2f

Хороший на панели инструментов = ложь, именно то, что я искал.
Часть, которую я пропустил, должна была заменить этоItemPath сReportServer?, Я не могу найти это нигде! Спасибо за то, что сэкономили мне часы разочарования!

Похожие вопросы