Foxtable(狐表)用户栏目专家坐堂 → [求助]代码生成统计表出错(除数为0)(已解决)


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

主题:[求助]代码生成统计表出错(除数为0)(已解决)

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]代码生成统计表出错(除数为0)(已解决)  发帖心情 Post By:2011/6/25 15:34:00 [只看该作者]

在代码生成的统计表添加一列表达式统计列:计算人均加工费

Dim b As New SQLGroupTableBuilder("统计表1","日报源表")
b.Groups.AddDef("日期", DateGroupEnum.None) '添加日期列用于分组
b.Groups.AddDef("单位") '根据单位分组
b.Totals.AddDef("加工费") '添加加工费列用于统计
b.Totals.AddDef("投工") '添加投工列用于统计
b.Totals.AddExp("人均","[加工费]/[投工]")'添加人均列用于计算人均加工费
b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表
With Tables("统计表1")
    .Position = .Rows.Count - 1
End With

运行出错,如何修改代码,解决除数为0的出错。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:a.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-6-25 22:43:50编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/25 15:38:00 [只看该作者]

b.Totals.AddExp("人均", "iif(投工 = 0, Null, 加工费/投工)")

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/6/25 16:25:00 [只看该作者]

谢谢狐爸的指点,出错的问题解决了,但是没有达到要求。

1、2010/1/2,单位1-2加工费4570元,投工155人,人均应该为29.48元,但结果为129.81元。

原因:在源表增加一列,分别计算出人均值,然后在统计表中进行累加,产生错误结果。

2、因为SQLGroupTableBuilder为后台数据分组统计,所以在统计表反映的是全部数据的统计结果,如何实现按登录用户只能看到自己的数据,而不是全部数据。

3、能否在GroupTableBuilder中添加一列表达式统计列,请指教。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:b.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:c.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/25 16:31:00 [只看该作者]

2、SqlGroupTableBuilder也可以设置条件的,有filter属性
3、可以增加表达式列:
 
Dim b As New SQLGroupTableBuilder("统计表1","日报源表")
b.Groups.AddDef("日期", DateGroupEnum.None) '添加日期列用于分组
b.Groups.AddDef("单位") '根据单位分组
b.Totals.AddDef("加工费") '添加加工费列用于统计
b.Totals.AddDef("投工") '添加投工列用于统计
b.Totals.AddExp("人均","[加工费]/[投工]")'添加人均列用于计算人均加工费
b.Build '生成统计表
DataTables("统计表1").DataCols.Add("列名",  GetType(Double), “表达式")
MainTable = Tables("统计表1") '打开生成的统计表
With Tables("统计表1")
     .Position = .Rows.Count - 1
End With

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/6/25 20:41:00 [只看该作者]

上传文件,还是请狐爸给看看,如何达到上述要求。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生产日报b.zip


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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/25 21:40:00 [只看该作者]

Dim b As New SQLGroupTableBuilder("统计表1","日报源表")
b.Groups.AddDef("日期", DateGroupEnum.None) '添加日期列用于分组
b.Groups.AddDef("单位") '根据单位分组
b.Totals.AddDef("加工费") '添加加工费列用于统计
b.Totals.AddDef("投工") '添加投工列用于统计
'添加人均列用于计算人均加工费
b.Build '生成统计表

Dim t As Table = Tables("统计表1")
MainTable = t '打开生成的统计表
t.Position = t.Rows.Count - 1
t.DataTable.DataCols.Add("人均", Gettype(Double), "iif(投工=0,null,加工费/投工)")

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/6/25 22:16:00 [只看该作者]

谢谢hhbb老师的指教!!从数据计算的正确性已达到要求,但是要求在统计表上只显示登录用户的资料,还请指教。再次感谢hhbb老师的热情帮助!!


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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/25 22:32:00 [只看该作者]

Dim b As New GroupTableBuilder("统计表1",DataTables("日报源表"))
b.Groups.AddDef("日期", DateGroupEnum.None) '添加日期列用于分组
b.Groups.AddDef("单位") '根据单位分组
b.Totals.AddDef("加工费") '添加加工费列用于统计
b.Totals.AddDef("投工") '添加投工列用于统计
b.Build '生成统计表
Dim t As Table = Tables("统计表1")
t.DataTable.DataCols.Add("人均", Gettype(Double),"iif(投工=0,null,加工费/投工)")

MainTable = t '打开生成的统计表
t.Position = t.Rows.Count - 1

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


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/6/25 22:32:00 [只看该作者]

Dim b As New GroupTableBuilder("统计表1",DataTables("日报源表"))
b.Groups.AddDef("日期", DateGroupEnum.None) '添加日期列用于分组
b.Groups.AddDef("单位") '根据单位分组
b.Totals.AddDef("加工费") '添加加工费列用于统计
b.Totals.AddDef("投工") '添加投工列用于统计
b.Build '生成统计表
Dim t As Table = Tables("统计表1")
t.DataTable.DataCols.Add("人均", Gettype(Double),"iif(投工=0,null,加工费/投工)")

MainTable = t '打开生成的统计表
t.Position = t.Rows.Count - 1

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/6/25 22:43:00 [只看该作者]

谢谢hhbb老师,问题全部解决,还要好好消化,再次真诚感谢hhbb老师及给我帮助的狐友。

 回到顶部