通常分组统计报表的组头(或组尾)显示分组字段名称及度量值的聚合(求和, 求平均或方差等),然而有时候我们希望显示明细项目名称串联。如下图,左边为普通分组展现,右边为自定义聚合效果:
常规的分组报表不做赘述,主要介绍自定义聚合报表设计,下图是报表设计界面:
该报表的自定义代码:
![ContractedBlock.gif](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
Dim
values
As
System.Collections.ArrayList
Sub AddValue( ByVal newValue As String )
If (values Is Nothing ) Then
values = New System.Collections.ArrayList()
End If
values.Add(newValue)
End Sub
Function GetNames( ByVal reset As Boolean ) As String
Dim s As String = ""
Dim i As Integer
Dim count As Integer = values.Count
For i = 0 To count - 1
s = s & " , " & values(i)
Next
GetNames = Mid (s, 3 )
If ( reset ) Then values = Nothing
End Function
Function GetNamesA( ByVal s As String , ByVal reset As Boolean ) As String
AddValue(s)
GetNamesA = GetNames( reset )
End Function
Sub AddValue( ByVal newValue As String )
If (values Is Nothing ) Then
values = New System.Collections.ArrayList()
End If
values.Add(newValue)
End Sub
Function GetNames( ByVal reset As Boolean ) As String
Dim s As String = ""
Dim i As Integer
Dim count As Integer = values.Count
For i = 0 To count - 1
s = s & " , " & values(i)
Next
GetNames = Mid (s, 3 )
If ( reset ) Then values = Nothing
End Function
Function GetNamesA( ByVal s As String , ByVal reset As Boolean ) As String
AddValue(s)
GetNamesA = GetNames( reset )
End Function
之后只需要将明细组设置仅显示最后一行,组头不显示即可。
明细组仅显示最后一行的设置是将其Visibility.Hidden置为=RowNumber("table2_Group1") < CountRows("table2_Group1")即可。
报表使用的数据集类型为IItemDetailResult(见下面类图):