Я создал проект отчета с использованием Microsoft Visual Studio 2017 как часть решения, содержащего другие проекты отчетов. В VS он запустил мастер отчетов, в котором я настроил New data source
и указал его на сервере под управлением Microsoft SQL Server 2016.
Отчет содержит несколько параметров, некоторые из которых имеют значение по умолчанию / доступно Значения в виде Specifi c Значения или Значения из запроса. Некоторые из этих значений также являются функциями VB, например значение по умолчанию StartDate =DateAdd("H",-24,Now())
и значение по умолчанию EndDate =Now()
У меня есть 4 набора данных, один из которых используется для заполнения доступных и стандартных значений параметра, остальные 3 используются для получения данных из базы данных, которая заполняет матрицу (4 разных графика). Все наборы данных Query types
установлены на Text
, и я записал SQL непосредственно в отчет, поскольку у меня нет возможности добавлять хранимые процедуры в базу данных.
Отчет также содержит пользовательский код, написанный в свойствах отчета, который используется для форматирования некоторых данных (для преобразования секунд в D: Hr: m: s.000) или для окрашивания ячеек матрицы для выделения внешних данных. Наконец, ячейки матрицы имеют действие для запуска отчета Drillthrough, которое также было разработано так же, как и основной отчет.

Через Visual Studio, у меня нет проблем с переключением между страницами Design
и Preview
, поэтому я могу успешно протестировать отчет на удаленной базе данных. Все функции работают отлично, и я могу настроить параметры, запустить отчет, сохранить отчет в excel / pdf / ect через VS Preview.
Я пытаюсь добавить Microsoft.Reporting.WinForms.ReportViewer
к отдельный C# проект. Я точно не знаю, что службы SSRS были установлены на сервере, работающем SQL 2016, но из-за возможности запуска отчета через VS в виде файла .rdl
, я подозреваю, что это так.
Элемент управления WinForms.ReportViewer
запрашивает Report Server Url
, если я выбираю Remote, но если я выбираю Local, согласно различным исследованиям, для отчета потребуется тип файла .rdlc
, и согласно этому ответу: { ссылка }, что потребовало бы кода для ручной обработки всех элементов управления параметрами отчета.
Я начал писать некоторый код для обработки XML всего файла .rdl
для генерации элементов управления из параметры, однако для некоторых параметров, таких как StartDate, мне бы пришлось обработать выражения VB в C#. Хотя я мог бы написать это для работы в приложении C#, это сделало бы отчет менее функциональным в конструкторе отчетов. Кроме того, некоторые наборы данных имеют формулы для значения параметра
=Split(Join(Parameters!ReportParameterFaultCategories.Value, ","),",")
Это связано с тем, что доступными значениями параметра являются разделенные запятыми списки целых чисел, в которых указана ссылка к ним в запросе SQL относятся
where values in (@ReportParameterFaultCategories)
