Foxtable(狐表)用户栏目专家坐堂 → 不解是何原因报错?


  共有4165人关注过本帖树形打印复制链接

主题:不解是何原因报错?

帅哥哟,离线,有人找我吗?
hdffzxf
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
不解是何原因报错?  发帖心情 Post By:2014/4/23 14:31:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 14:35:00 [显示全部帖子]

刚上传图成功


 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 14:46:00 [显示全部帖子]

因为是要根据提供的条件反复的生成统计表,我想问的是:在什么情况下会按垂直分组自动生成的统计列会生成失败而报错,我好排查我的代码逻辑上是否有问题,现在是反复排查也找不到问题的根源。

 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 15:02:00 [显示全部帖子]

没有表达式列

 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 15:05:00 [显示全部帖子]

如果引用了不存在的列,比如这个“期末余额1”不存在,那也该是提示期末余额1_1出错呀,而且这个列是绝对正常存在的列。另外,因为我这个程序涉及的表相当庞大,而且建立在互联网服务器上,程序的逻辑也相对复杂了一些,可能不便将例子传上来

 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 15:15:00 [显示全部帖子]

我只要能搞清楚何种情况下,会提示统计列生成失败,就有办法逆向找到出错的根源,现在是排查了一个晚上,只在某一个事件调用自定义函数时报错,其他事件调用又不报错,来回测试了调试了一天,如终未能找到原因究竟是什么,调试中我在程序中加入了判断各列是否存在的句子,证明引用的各列存在,但到最后一步生成统计表时:g.Build ,此处就会出错,郁闷中。。。


 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 15:16:00 [显示全部帖子]

以下是引用有点甜在2014-4-23 15:06:00的发言:

 

根据提示,就是说没有这一列,你确定那个表里有这一列,而且不是表达式列吗?

嗯,不是表达式列,我所有的表因特殊原因,均未采用表达式列


 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 17:52:00 [显示全部帖子]

以下是引用Bin在2014-4-23 15:19:00的发言:
上个例子让大家帮你分析一下看看.

做了一个例子,反复进行统计,也发现了一个规律,当垂直分组列的数值多时,也即合并范围列的值多(此列做为fiter的筛选条件),不报错,反之,即会报错。即先统多,后统少时报错。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:交叉统计表错误例子.zip

[此贴子已经被作者于2014-4-23 17:53:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/23 17:54:00 [显示全部帖子]

以下是引用Bin在2014-4-23 17:53:00的发言:
例子发出来啊

发出了,不好意思,论坛沾文件还不是很熟练


 回到顶部
帅哥哟,离线,有人找我吗?
hdffzxf
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:393 积分:3723 威望:0 精华:0 注册:2013/10/9 23:09:00
  发帖心情 Post By:2014/4/24 16:55:00 [显示全部帖子]

以下是引用有点甜在2014-4-23 19:39:00的发言:

 我测试了一下,是最后一句代码的问题。把g.Build改成

 

Tables("窗口1_Table4").DataSource = g.BuildDataSource

文档中也确实写到了关于生成统计表的表名的问题,现已解决!谢谢!


 回到顶部
总数 11 1 2 下一页