作者:_戒咗微博地_100 | 来源:互联网 | 2024-12-25 17:12
在过去两周中,我们利用ReportViewer开发了与生产良率相关的报表,其中每个制程的直通率是所有测试项良率的乘积。由于ReportViewer没有内置的累乘函数,因此需要借助自定义代码来实现这一功能。本文将详细介绍实现步骤和相关代码。
在过去两周中,我们使用 ReportViewer 制作了与生产良率相关的报表,其中一个关键指标是每个制程的直通率,它由该制程内所有测试项的良率乘积计算得出。
然而,ReportViewer 并未提供累乘的内置函数。为了实现这一功能,我们参考了 Excel 和网上的技术博客(如 此篇博客),并总结了以下实现步骤和 VB.NET 代码:
步骤一:为报表添加自定义代码
在报表中定义两个公共变量和一个公共函数,用于实现分组累乘:
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
步骤二:设置报表字段表达式
- 编辑良率数据字段表达式,设置为
Code.Product(Fields!YourColumnName.Value, Fields!YourGroupName.Value)
。
- 编辑统计结果字段表达式,设置为
Code.ProductValue
。
保存、编译并通过发布测试后,报表成功实现了所需的累乘功能。