上两周用 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 。
保存,编译通过,发布成功。