Вопрос

Я хотел бы иметь возможность перебирать все определенные параметры в моих отчетах и ​​строить строку отображения имени и значения параметра.Затем я отображал результаты в отчете, чтобы пользователь знал, какие параметры использовались для этого конкретного выполнения.Единственная проблема заключается в том, что я не могу просмотреть коллекцию параметров.Кажется, в коллекции параметров нет индексатора, и он, похоже, не реализует IEnumerable.Кто-нибудь смог это сделать?Я использую SSRS 2005, и он должен быть реализован в коде отчета (т. е. без внешней сборки).Спасибо!

Это было полезно?

Решение

К сожалению, похоже, простого способа сделать это не существует.Видеть http://www.jameskovacs.com/blog/DiggingDeepIntoReportingServices.aspx для получения дополнительной информации.Если вы посмотрите на комментарии к этому посту, есть несколько способов обойти это, но они не очень элегантны.Самое простое решение потребует наличия списка параметров отчета где-то в вашем отчетном коде, что явно нарушает СУХОЙ Принцип, но если вам нужно самое простое решение, вам, возможно, придется с этим смириться.

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

Другие советы

Если я понимаю ваш вопрос, просто сделайте то, что я делаю:Перетащите текстовое поле в отчет, а затем во время настройки отчета вставьте следующее:="Параметр1:" + Параметры! Параметр. Метка + ", Параметр2:" + Параметры!Параметр2.Метка...

Конечно, это не самая красивая вещь, но в нашем приложении она работает довольно хорошо.

И я использую метки вместо значений, поскольку у нас есть значения даты и времени, а пользователя интересует только короткая дата или месяц и год (в зависимости от обстоятельств), и я уже проделал эту работу по форматированию при настройке параметров. .

Я могу придумать как минимум два способа сделать это.Первое может сработать, второе обязательно сработает.

  1. Используйте веб-сервис.Я почти уверен, что видел API для получения набора параметров.Даже если прямого доступа нет, вы всегда можете создать стандартную коллекцию и скопировать объекты ReportParameter из одного в другой в цикле foreach, а затем получить доступ к Count с отдельными свойствами параметра, доступными путем разыменования экземпляров ReportParameter.

  2. Отчеты RDL.RDL — это XML.Создайте XmlDocument и загрузите файл RDL, затем используйте DOM, чтобы сделать, ну, все, что ты любишь вплоть до установки значений по умолчанию или даже перезаписи строк подключения.

Если ваше приложение не будет иметь доступа к файловой системе к файлам RDL, вы можете получить их через веб-службу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top