VS2010 Report Viewer 行列分组累乘实现总结

时间:2021-06-10 08:21:56

上两周用 Report Viewer 制作生产良率相关的报表,每个制程的直通率是其中所有测试项的良率乘积。

但是Report Viewer没有累乘的内置函数。通过参考EXCEL和网上的BLOG(http://blog.csdn.net/cdwolfling/article/details/4187593),大致的实现步骤和VB.NET代码记录如下:

步骤一:为报表添加自定义代码。

定义两个变量和一个函数,访问权限都是public。

 1     '分组乘积
 2     Public ProductValue As Double = 1.0
 3     '分组条件
 4     Public CurrentGroupName As String
 5 
 6     '根据分组条件,统计组内数据乘积
 7     Public Function Product(ByVal ItemValue As Double, ByVal ItemGroupName As String) As Double
 8 
 9         If (String.IsNullOrWhiteSpace(CurrentGroupName)) Then
10             CurrentGroupName = ItemGroupName
11         End If
12         '只有该项数值大于零,才有必要统计
13         If (ItemValue > 0) Then
14             '同组的数值,进行累乘
15             If (CurrentGroupName = ItemGroupName) Then
16                 ProductValue = ProductValue * ItemValue
17 
18             Else
19                 '不同组,重置所有成员变量
20                 CurrentGroupName = ItemGroupName
21                 ProductValue = ItemValue
22 
23             End If
24 
25         End If
26         '返回数据项的值
27         Return ItemValue
28 
29     End Function

步骤二:设置报表。

  1.编辑良率数据字段表达式,设置为 Code.Product(Fields!YourColumnName.Value,Fields!YourGroupName.Value) 。

  2.编辑统计结果字段表达式,设置为 Code.ProductValue 。

保存,编译通过,发布成功。