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


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

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

帅哥哟,离线,有人找我吗?
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编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/4/23 14:32:00 [只看该作者]

看不到图,报什么错?  有例子更好.


上传图片和文件参考这里http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=78


请尽量使用IE,谷歌,火狐等主流浏览器上传.  

使用谷歌浏览器必须要先输入一个以上的字符

上传后需要等文件代码出现才算成功!

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


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

刚上传图成功


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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/23 14:46:00 [只看该作者]

以下是引用hdffzxf在2014-4-23 14:35:00的发言:

刚上传图成功

 

你的那一列是不是表达式列?如果是表达式,需要特殊处理一下的,要这样添加。

 

Dim b As New SQLCrossTableBuilder("统计表1","订单")

b.HGroups.AddExp("金额", "单价 * 数量")

[此贴子已经被作者于2014-4-23 14:49:07编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/4/23 14:47:00 [只看该作者]

例子发上来看看吧,应该是你引用了不存在的列.

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


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

没有表达式列

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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/23 15:06:00 [只看该作者]

以下是引用hdffzxf在2014-4-23 15:02:00的发言:
没有表达式列

 

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


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


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

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


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