Как настроить параметры отчета SSRS для связанного отчета с помощью SOAP API? - PullRequest
1 голос
/ 26 января 2010

У меня есть ситуация, когда мне нужно, чтобы мой сервер отчетов был более или менее общедоступным, поскольку мы используем элемент управления ReportViewer в веб-приложении ASP.NET, и группы пользователей будут получать доступ к различным отчетам.

Это будет работать с SQL Server 2008 Standard Edition.

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

В двух словах, отчет имеет небольшое количество зарезервированных имен параметров (например, UserID и LanguageID). Во время выполнения веб-приложение проверит, есть ли у пользователя связанный отчет (используя уникальные имена связанных отчетов для каждого отчета / пользователя), и создаст его, если он не существует.

Это делается с помощью SSRS SOAP API и работает отлично. У меня проблема с настройкой параметров отчета для связанного отчета.

Например, если я вхожу в систему как системный администратор, я просто хочу просмотреть отчет и иметь полное управление параметрами в средстве просмотра отчетов. Если я войду как «низкий» пользователь, я ожидаю, что для параметра UserID будет установлен мой идентификатор в связанном отчете, и я не смогу изменить UserID для отслеживания отчетов других пользователей.

Это можно сделать вручную в диспетчере отчетов, открыв свойства связанного отчета, установив значения параметров по умолчанию и сняв флажок «Приглашение пользователя».

Теперь я пытаюсь сделать это программно, используя SOAP API, и, похоже, не могу найти правильный способ сделать это.

В некоторых местах я читал подсказки о том, что метод CreateLinkedReport может устанавливать параметры, но я начинаю думать, что это просто недоразумение со стороны авторов. Хотя этот метод принимает свойства Property [], эти свойства отображаются только для предоставления метаданных отчета (например, связанного имени отчета).

Существует ли специальная разметка, которую нужно использовать с именем / значениями свойства, чтобы указать, что свойство является параметром отчета?

Любые идеи приветствуются.

1 Ответ

1 голос
/ 27 января 2010

Ах! Понял!

Существует 2 метода SOAP: GetReportParameters и SetReportParameters

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

Для любых будущих искателей: Я написал метод для получения ReportParameter [] (результат GetReportParameters, вызываемого для связанного отчета ) и итерации по ним. Код псевдо / почти C #:

ReportParameter[] reportParameters = ReportingService2005.GetReportParameters(LinkedReportName);
foreach( ReportParameter reportParameter in reportParameters)
{
   switch(reportParameter.Name)
   {
      case "ReservedParam1":
         reportParameter.DefaultValues = new string[1];
         reportParameter.DefaultValues[0] = CalculateReservedParam1();
         reportParameter.PromptUser = false;
      //etc
   }
}
try
{
   ReportingService2005.SetReportParameters(reportParameters);
}
catch (Exception e)
{
   // if error occurs while replacing params, delete linked report so user can't specify parameters they aren't entitled to
   ReportingService2005.DeleteItem(LinkedReportName);
   throw e;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...