Автоматизировать добавление параметров в SSRS через asp.net
Я расширяю существующее приложение для размещения отчетов SSRS с помощью элемента управления ASP.Net WebForms ReportViewer. Существует большое количество существующих отчетов. Это не будет проблемой, за исключением того, что нам также необходимо передавать другой параметр в каждый отчет.
Кто-то из нашей команды предположил, что мы могли бы добавить еще один параметр, и SSRS передаст его хранимой процедуре, связанной с каждым отчетом. Ничего не зная об отчетных службах, я изучил это.
Я попробовал следующее:
private void AddNewParameter(Report report)
{
var reportParameters = new List<ReportParameter> { new ReportParameter(paramName, "foo", false) };
report.SetParameters(reportParameters);
}
Вызов Report.SetParameters() жалуется на новый параметр, отсутствующий в отчете. Страница MSDN для SetParameters () имеет примечание внизу, которое гласит:
"Параметры, указанные для метода SetParameters, должны быть определены в исходном определении отчета".
Может ли кто-нибудь подтвердить, что у меня такое ощущение, что все наши отчеты должны быть изменены, чтобы принять новый параметр?
1 ответ
Подход, который вы пытаетесь сделать, будет тупиком. Сожалею. Чувство погружения подтверждается. Тем не мение...
Если существует множество отчетов, то вы, возможно, могли бы разработать автоматизированный подход для их обновления, изменив базовый язык определения отчетов. Ссылка, которую я только что опубликовал, приведет вас к статье TechNet, в которой есть дополнительные ссылки на фактические определения схемы для каждой версии и т. Д.
RDL - это на самом деле просто XML, чтобы процитировать статью TechNet напрямую:
RDL состоит из элементов XML, соответствующих грамматике XML, созданной для служб Reporting Services. Вы можете добавить свои собственные пользовательские функции для управления значениями, стилями и форматированием элементов отчета, открывая сборки кода в файлах определения отчета.
Только вы могли взвесить работу по разработке этого типа решения против ручного подхода.
Чтобы получить представление о необходимых изменениях:
- Сохранить копию одного отчета.
- Изменить отчет с изменениями
- Сравните модифицированный rdl с оригинальным (BeyondCompare, notepad ++, что угодно)
Если вам удобно разбирать XML, то воспроизведение изменений в оставшихся отчетах будет полностью выполнимым.