共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
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]