Пользовательский код для SSRS 2014
Я хочу воссоздать старый отчет SSRS для SSRS 2014. Старый отчет был сделан в SSRS 2005 при поддержке Dundas Chart for Reporting Services. Поскольку Dundas была приобретена Microsoft, аддон больше не доступен для SSRS 2014.
Критическим объектом отчета является точечная диаграмма. В старом отчете можно было добавить пользовательский код на диаграмму Dundas. С помощью пользовательского кода мы построили диаграмму, которая имела разные диапазоны сплайнов с данными, находящимися где-то в базе данных, на фоне фактических данных в диаграмме. Код, который был использован, является следующим:
String connString01b =
"SERVER=SERVER;database=DATABASE;Trusted_Connection=Yes";
String commandText01b = "SELECT xx_X, xx_Min, xx_Max
FROM table WHERE (xx_X IS NOT NULL) ORDER BY
xx_X;";
System.Data.SqlClient.SqlConnection conn01b = new
System.Data.SqlClient.SqlConnection(connString01b);
System.Data.SqlClient.SqlCommand command01b = new
System.Data.SqlClient.SqlCommand(commandText01b, conn01b);
conn01b.Open();
System.Data.SqlClient.SqlDataReader aReader01b =
command01b.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
strLegend = "xxx";
Series Series01b = chartObj.Series.Add(strLegend);
Series01b.Type = SeriesChartType.SplineRange;
Series01b.ChartArea = chartObj.ChartAreas[0].Name;
Series01b.Color = Color.FromArgb(127, Color.Blue);
Series01b.Points.DataBind(aReader01b,"xx_X","xx_Min,
xx_Max
","");
Теперь я хочу построить эту диаграмму в SSRS 2014 без возможности использовать пользовательский код dundas.
Есть ли шанс сделать это, не объединяя данные для точечной диаграммы и сплайн-диапазона в один набор данных?
Кроме того, даже если бы мне удалось объединить данные в один набор данных, я думаю, что не смогу получить желаемый результат из-за выбранной категории и группы рядов для фактических данных.
Я уже думал о функции "Уточняющий запрос", но это также невозможно, поскольку данные не имеют идентичного столбца.
1 ответ
Вы можете выполнять запросы к базе данных (за пределами набора данных), используя пользовательские сборки (которые в значительной степени являются классами C#, скомпилированными в DLL, загружены на сервер SSRS и затем упомянуты в вашем RDL).
Я делал это в прошлом. Класс C# фактически взял в качестве входных данных строку, представляющую запрос, а затем выполнил этот запрос в базе данных (либо жестко запрограммирован, либо предоставлен в качестве другого параметра). Я уверен, что вы можете обсуждать вопросы безопасности и разрешения в течение всего дня... вам нужно будет сделать свои собственные решения.
Пользовательский код вызывается в выражениях так же, как пользовательский код VBA.
Чего я не знаю, так это того, можете ли вы вернуть более 1 значения и действовать в соответствии с этими значениями в SSRS. У меня когда-либо был случай вызова пользовательской сборки, чтобы получить 1 скалярное значение.