Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共10 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
yyzlxc 发表于: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楼
狐狸爸爸 发表于:2011/6/25 15:38:00
b.Totals.AddExp("人均", "iif(投工 = 0, Null, 加工费/投工)")
3楼
yyzlxc 发表于: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楼
狐狸爸爸 发表于: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
5楼
yyzlxc 发表于:2011/6/25 20:41:00

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

 

 

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

6楼
hhbb 发表于: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,加工费/投工)")
7楼
yyzlxc 发表于:2011/6/25 22:16:00

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

8楼
hhbb 发表于: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
9楼
hhbb 发表于: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
10楼
yyzlxc 发表于:2011/6/25 22:43:00
谢谢hhbb老师,问题全部解决,还要好好消化,再次真诚感谢hhbb老师及给我帮助的狐友。
共10 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 3 queries.