s-s-rS 2014 的自定义代码

Posted

技术标签:

【中文标题】s-s-rS 2014 的自定义代码【英文标题】:Custom Code for s-s-rS 2014 【发布时间】:2017-11-02 12:41:54 【问题描述】:

我想为 s-s-rS 2014 重新创建旧的 s-s-rS 报告。旧报告是在 s-s-rS 2005 中在 Dundas Chart for Reporting Services 的支持下制作的。由于 Dundas 被 Microsoft 收购,该插件不再适用于 s-s-rS 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
","");

现在我想在 s-s-rS 2014 中构建此图表,而不能使用 dundas 自定义代码。

是否有机会在不必将散点图和样条曲线范围的数据合并到一个数据集中的情况下执行此操作? 此外,即使我能够将数据合并到一个数据集中,我认为由于为实际数据选择的类别和系列组,我无法获得我想要的结果。

我已经考虑过 Lookup 功能,但这也是不可能的,因为数据没有相同的列。

【问题讨论】:

【参考方案1】:

您可以使用自定义程序集(几乎是编译为 DLL、加载到 s-s-rS 服务器、然后在 RDL 中引用的 C# 类)对数据库(数据集外部)运行查询。

我过去曾这样做过。 C# 类有效地将表示查询的字符串作为输入,然后在数据库中执行该查询(硬编码或作为另一个参数提供)。我敢肯定,您可以整天讨论安全性和权限……您需要在那里做出自己的决定。

您可以像调用 VBA 自定义代码一样在表达式中调用自定义代码。

我不知道你是否可以返回超过 1 个值并在 s-s-rS 中对这些值进行操作。我只有调用自定义程序集来获得 1 个标量值的用例。

【讨论】:

感谢您的回答。问题是在哪里调用代码。是否可以像在 Dundas for Reporting Services 中那样从图表中单独调用自定义代码?通过在图表数据中调用它,仍然会连接到散点图的类别和系列组,这使得它无法按照我习惯的方式显示。

以上是关于s-s-rS 2014 的自定义代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 s-s-rS 2016 的自定义身份验证(安全扩展)

s-s-rS 报告中的自定义数字格式

我有一个无法正常工作的自定义 s-s-rS 表达式

s-s-rS 中的自定义定时订阅计划

s-s-rS 中的自定义 tablix 过滤器

折线图的 s-s-rS 自定义颜色