SSRS с пользовательским веб-интерфейсом

Возможно ли создать пользовательский веб-интерфейс для запуска отчетов SSRS?

У нас есть существующий кросс-браузерный веб-интерфейс для сбора входов отчетов (для платформы, отличной от SSRS), которую мы хотели бы продолжить с SSRS. Он включает в себя специфические для домена элементы управления пользовательским интерфейсом, которые уже разработаны внутри компании, и ничто не приближается к OOTB с SSRS.

Нам не нужно делать динамическую рендеринг элементов управления, ориентированных на тип, хотя я полагаю, что RDL может помочь нам рассказать, какие параметры (и их тип) принимает отчет, но нам нужно больше, чем Report Manager дает нам.

По существу, мы хотели бы настроить/заменить пользовательский интерфейс ввода-сбора, созданный диспетчером отчетов. Нам также нужен некоторый modicum брендинга. Было бы проще вообще отказаться от диспетчера отчетов (внешне я имею в виду) и напрямую взаимодействовать с веб-службой SSRS через наше собственное приложение ASP.NET?

Я новичок в области отчетности, и я не могу найти никакой информации об этом. Мы используем службы отчетов SQL Server 2005.

Ответ 1

Да, это возможно. Мы реализовали решение, подобное этому более 2 лет назад, когда мы были разгромлены выбором параметров, который пришел OOTB.

По существу у нас есть пользовательское приложение ASP.NET, с которым пользователи взаимодействуют. Когда первая страница загружается, он представляет список отчетов, доступных для этого пользователя (связь из приложения ASP.NET с SSRS через веб-службы и с олицетворением идентичности, чтобы список был обрезан безопасностью). Вам нужно будет использовать Kerberos здесь, если пользовательское приложение ASP.NET находится на другом сервере на сервере отчетов.

После того, как пользователь выберет отчет, отобразится экран выбора параметров (все еще в пользовательском приложении ASP.NET). Когда они выбирают свои параметры и нажимают "Создать отчет", некоторые JavaScript добавляет теги ввода для каждого параметра в HTML-форму "на лету" (скрытые от пользователя), а затем выполняет HTTP POST на веб-сервере SSRS.

Затем мы используем средство просмотра отчетов OOTB для отображения отчета, однако оно размещается в кадре, так что верх экрана позволяет пользователю содержаться в пользовательском веб-приложении. Это позволяет им быстро вернуться и изменить параметры.

Мы использовали этот подход, потому что у нас есть глобальная организация, но наше приложение было организовано централизованно - мы хотели, чтобы производительность была максимально возможной для всех пользователей. То, что мы обнаружили, было то, что средство просмотра отчетов выглядело довольно неплохо, но выбор OOTB Parameter Selection, который пришел OOTB, был ужасен для соединений с высокой задержкой - много обратных передач и слишком большого трафика.

Еще один трюк - мы сделали параметры "скрытыми" в отчете, чтобы параметры не отображались в средстве просмотра отчетов.

Редактирование: мы с этим справились с SSRS 2005 и недавно обновили до SSRS 2008 с минимальными проблемами.

Ответ 2

Если я правильно вас понимаю, вы захотите использовать ReportViewer для рендеринга отчетов.

В любом случае вы можете реализовать сбор данных, а затем просто передавать входы в отчеты как параметры:

//the report classes are in the namespace: Microsoft.Reporting.WebForms
Collection<ReportParameter> paramList = new Collection<ReportParameter>();
string reportPath = ApplicationInfo.ScorecardReportPath;
paramList.Add(new ReportParameter("UID", "5"));

ReportViewer1.ProcessingMode = ProcessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://servername/ReportServer");
ReportViewer1.ServerReport.ReportPath = reportPath;
ReportViewer1.ServerReport.SetParameters(paramList);
ReportViewer1.ServerReport.Refresh();

ReportViewer - это элемент управления, который вы можете добавить на свою страницу:

<rsweb:ReportViewer id="ReportViewer1" runat="server" documentmapwidth="175px" 
font-names="Verdana" font-size="8pt" promptareacollapsed="true" width="100%"
zoommode="Percent" zoompercent="100"/>

Я использовал этот подход, чтобы вложить отчет в окно, содержащееся на главной странице. Он позволяет отображать меню/заголовок/нижний колонтитул.

Ответ 3

Мы создали пользовательский интерфейс для сбора критериев и форматирования (PDF, XLS и т.д.) данных и использовали SSRS Web Services для запуска отчетов.

Это позволило нам делать именно то, о чем вы говорите, относительно использования собственного пользовательского интерфейса и брендинга вокруг отчетов.

Фактически вы передаете имя RDL и набор параметров отчета в веб-службу, и он вернет HTML (или любой другой формат).

Некоторые ошибки включают необходимость переписывать URL-адреса при использовании сортировки столбцов SSRS и необходимости устанавливать собственные типы mime, если вы хотите поддерживать PDF/Doc/XLS и т.д.

Ответ 4

Альтернативный способ создания фирменного взгляда на SSRS, если вы не хотите использовать ASP.Net. Используйте дополнительный отчет в качестве заголовка и располагайте навигацию между отчетами.

http://mybinote.blogspot.se/2012/03/branding-ssrs-and-make-it-look-like.html