
此主题相关图片如下:qq图片20140423143345.jpg

写了一个生成交叉统计表的自定义函数:生成统计表,代码如下:
'''
Dim bmlr As Row =Tables("表目录").Current
Dim xmr As Row=Tables("审计项目信息").Current
Dim 被统计表名 As String=bmlr("被统计表名")
Dim 表名 As String=bmlr("表名")
Dim 水平分组列集合() As String=bmlr("水平分组列").Split(",")
Dim 垂直分组列集合() As String=bmlr("垂直分组列").Split(",")
Dim 统计列集合() As String= bmlr("统计列").Split(",")
Dim 是否垂直汇总 As Boolean=bmlr("是否垂直汇总")
Dim 是否水平汇总 As Boolean=bmlr("是否水平汇总")
Dim 合并范围集合() As String= xmr("合并范围").Split(",")
Dim 合并单位名称 As String
Dim f As String ''筛选条件
If DataTables.Contains(被统计表名)=False Then '如果表不存在
DataTables.Load(被统计表名)
End If
Dim dt As DataTable=DataTables(被统计表名)
''筛选在合并范围内单户审计项目的行次
For Each 项目编号 As String In 合并范围集合
f=f & "{" & 被统计表名 & "}." & "审计项目编号='" & 项目编号 & "' or "
Next
f=f.substring(0,f.Length-4)
Dim g As New SQLCrossTableBuilder(表名, 被统计表名)
g.C
g.OrderByTotal = True
g.AddTable(被统计表名,"审计项目编号","审计项目信息","审计项目编号")
g.Filter=f
For Each 水平分组列 As String In 水平分组列集合
g.HGroups.AddDef(水平分组列,水平分组列,Tables(被统计表名).Cols(水平分组列).Caption)
Next
g.VGroups.AddDef("{审计项目信息}.被审计单位名称")
For Each 统计列 As String In 统计列集合
g.Totals.AddDef(统计列)
Next
g.HorizontalTotal = 是否水平汇总
g.VerticalTotal = 是否垂直汇总
''水平份额,垂直比例设置
''g.HorizontalProportion =
''g.VerticalProportion = 是否垂直汇总
g.Filter=f
g.Build ''经测试排查,应是在此处报错
For Each c As DataCol In DataTables(表名).dataCols
If c.Name.Contains("合计") Or c.Caption.Contains ("合计") Then
c.caption=c.caption.Replace("合计_","") & "_合计"
End If
Next
有时,在调用这个自定义函数时,出现报错,报错的内容如上图,其中:资产负债合并过程表是生成的交叉统计表,期末余额1是统计列,期末余额1_3列,也应是生成的交叉统计表的某一统计列,按道理会根据垂直分组列的情况自动生成期末余额1_3列,怎么会报错呢?百思不得其解,请专家指教!
[此贴子已经被作者于2014-4-23 15:37:58编辑过]