Foxtable(狐表)用户栏目专家坐堂 → 代码纠错。


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

主题:代码纠错。

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


加好友 发短信
等级:幼狐 帖子:129 积分:1199 威望:0 精华:0 注册:2013/3/7 11:20:00
代码纠错。  发帖心情 Post By:2014/10/30 11:02:00 [只看该作者]

我下面的一大段代码是采用组合统计多个连接列编写的,测试后应用没有其他问题。只有一个问题很困扰我,就是根据月度分组时本该同年同月在一起分组的,但是这段代码是把不同年份相同月份的数据分组在一起了。个数据表中月度列的列属性我选择的都是日期时间,格式是DATE(2014-01-31),请大侠们帮我看看这段代码哪里有问题,小弟不胜感激啊

 

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("营业收入"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("店面名称") '根据店面名称分组
bd1.Groups.AddDef("月度") '根据月度分组
bd1.Totals.AddDef("营业收入","收入总金额") '对营业收入进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("固定支出"))
Dim dt2 As fxDataSource
bd2.Groups.AddDef("店面名称") '根据店面名称分组
bd2.Groups.AddDef("月度") '根据月度分组
bd2.Totals.AddDef("支出金额","支出总金额") '对支出金额进行统计
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("费用支出"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("店面名称") '根据店面名称分组
bd3.Groups.AddDef("月度") '根据月度分组
bd3.Totals.AddDef("费用金额","费用总金额") '对费用金额进行统计
dt3 = bd3.BuildDataSource()

Dim bd4 As New GroupTableBuilder("统计表4",DataTables("成本支出"))
Dim dt4 As fxDataSource
bd4.Groups.AddDef("店面名称") '根据店面名称分组
bd4.Groups.AddDef("月度") '根据月度分组
bd4.Totals.AddDef("成本金额","成本总金额") '对成本金额进行统计
dt4 = bd4.BuildDataSource()

Dim nms As String() = {"店面名称","月度"} '指定连接列
dt1.Combine(nms,dt2,nms) '将支出总金额组合到营业收入统计数据
dt1.Combine(nms,dt3,nms) '将费用总金额组合到营业收入统计数据
dt1.Combine(nms,dt4,nms) '将成本总金额组合到营业收入统计数据
Tables("窗口1_Table11").DataSource = dt1 '将统计结果绑定到Table
With DataTables("窗口1_Table11").DataCols  '用表达式列计算当月利润数据
    .Add("当月利润",Gettype(Integer), "IsNull([收入总金额],0) - ISNULL([支出总金额],0) - ISNULL([费用总金额],0) - ISNULL([成本总金额],0)")
End With

[此贴子已经被作者于2014-10-30 11:02:43编辑过]

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


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

1、你要根据年、月一起分组;

 

2、最后,要根据店面、年、月一期合并。

 

在Groups集合中添加一个分组列的语法是: 

Groups.AddDef(Name)
Groups.AddDef(Name, NewName)
Groups.AddDef(Name, NewName, NewCaption)
Groups.AddDef(Name, DateGroup)
Groups.AddDef(Name, DateGroup, NewName)
Groups.AddDef(Name, DateGroup, NewName, NewCaption)

 

参数说明

Name:        字符型,指定分组列。
NewName:     字符型,用于给分组列指定一个新的名称,这个名称在统计表中显示。
NewCaption:  字符型,用于给分组列设置标题。
DateGroup:  DateGroupEnum型枚举,如果分组列是日期列,可用此属性指定如何根据日期进行分组,默认按月分组。

 

DateGroupEnum枚举的可选值:

None :     不分组
Year:      按年分组
Quarter:   按季度分组
Month:     按月分组
Week:      按周分组
Day:       按天分组,月中的某一天。
Hour:      按小时分组
Minute:    按分钟分组
Second:    按秒分组


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


加好友 发短信
等级:幼狐 帖子:129 积分:1199 威望:0 精华:0 注册:2013/3/7 11:20:00
  发帖心情 Post By:2014/10/30 11:38:00 [只看该作者]

看了半天你的回复,非常感谢,但是我试着改了半天,还是改不对,而且越改越乱。小弟不才啊,还请兄台能帮忙具体指出小弟的那行代码应该改成什么样子吧。

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


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

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("营业收入"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("店面名称") '根据店面名称分组
bd1.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd1.Groups.AddDef("月度") '根据月度分组
bd1.Totals.AddDef("营业收入","收入总金额") '对营业收入进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("固定支出"))
Dim dt2 As fxDataSource
bd2.Groups.AddDef("店面名称") '根据店面名称分组
bd2.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd2.Groups.AddDef("月度") '根据月度分组
bd2.Totals.AddDef("支出金额","支出总金额") '对支出金额进行统计
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("费用支出"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("店面名称") '根据店面名称分组
bd3.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd3.Groups.AddDef("月度") '根据月度分组
bd3.Totals.AddDef("费用金额","费用总金额") '对费用金额进行统计
dt3 = bd3.BuildDataSource()

Dim bd4 As New GroupTableBuilder("统计表4",DataTables("成本支出"))
Dim dt4 As fxDataSource
bd4.Groups.AddDef("店面名称") '根据店面名称分组
bd4.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd4.Groups.AddDef("月度") '根据月度分组
bd4.Totals.AddDef("成本金额","成本总金额") '对成本金额进行统计
dt4 = bd4.BuildDataSource()

Dim nms As String() = {"店面名称","年度","月度"} '指定连接列
dt1.Combine(nms,dt2,nms) '将支出总金额组合到营业收入统计数据
dt1.Combine(nms,dt3,nms) '将费用总金额组合到营业收入统计数据
dt1.Combine(nms,dt4,nms) '将成本总金额组合到营业收入统计数据
Tables("窗口1_Table11").DataSource = dt1 '将统计结果绑定到Table
With DataTables("窗口1_Table11").DataCols  '用表达式列计算当月利润数据
    .Add("当月利润",Gettype(Integer), "IsNull([收入总金额],0) - ISNULL([支出总金额],0) - ISNULL([费用总金额],0) - ISNULL([成本总金额],0)")
End With


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


加好友 发短信
等级:幼狐 帖子:129 积分:1199 威望:0 精华:0 注册:2013/3/7 11:20:00
  发帖心情 Post By:2014/10/30 11:54:00 [只看该作者]

非常感谢兄台。按你给的代码测试成功,你是真正的大侠!呵呵

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


加好友 发短信
等级:幼狐 帖子:129 积分:1199 威望:0 精华:0 注册:2013/3/7 11:20:00
  发帖心情 Post By:2014/10/31 10:13:00 [只看该作者]

兄台多谢你帮着小弟做了个多列组合式的统计表,但是小弟现在又遇到个问题,就是针对这个统计表的查询设置怎么弄啊,我以前都是用目录树的方法做查询的,现在好像对统计表不管用了。一般的查询方式对统计表是不是都不管用啊?

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


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

  不会啊。关键是你看一下这个表的表结构,有可能表名没写对。

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


加好友 发短信
等级:幼狐 帖子:129 积分:1199 威望:0 精华:0 注册:2013/3/7 11:20:00
  发帖心情 Post By:2014/10/31 10:50:00 [只看该作者]

下面红色部分是加入表达式列,我好想做的不对,总是弹出错误。你帮我看看该怎么加入表达式列啊。
Dim bd1 As New GroupTableBuilder("利润表",DataTables("营业收入"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("店面名称") '根据店面名称分组
bd1.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd1.Groups.AddDef("月度") '根据月度分组
bd1.Totals.AddDef("营业收入","收入总金额") '对营业收入进行统计
dt1 = bd1.BuildDataSource()
Dim bd2 As New GroupTableBuilder("统计表2",DataTables("固定支出"))
Dim dt2 As fxDataSource
bd2.Groups.AddDef("店面名称") '根据店面名称分组
bd2.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd2.Groups.AddDef("月度") '根据月度分组
bd2.Totals.AddDef("支出金额","支出总金额") '对支出金额进行统计
dt2 = bd2.BuildDataSource()
Dim bd3 As New GroupTableBuilder("统计表3",DataTables("费用支出"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("店面名称") '根据店面名称分组
bd3.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd3.Groups.AddDef("月度") '根据月度分组
bd3.Totals.AddDef("费用金额","费用总金额") '对费用金额进行统计
dt3 = bd3.BuildDataSource()
Dim bd4 As New GroupTableBuilder("统计表4",DataTables("成本支出"))
Dim dt4 As fxDataSource
bd4.Groups.AddDef("店面名称") '根据店面名称分组
bd4.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd4.Groups.AddDef("月度") '根据月度分组
bd4.Totals.AddDef("成本金额","成本总金额") '对成本金额进行统计
dt4 = bd4.BuildDataSource()
Dim nms As String() = {"店面名称","年度","月度"} '指定连接列
dt1.Combine(nms,dt2,nms) '将支出总金额组合到营业收入统计数据
dt1.Combine(nms,dt3,nms) '将费用总金额组合到营业收入统计数据
dt1.Combine(nms,dt4,nms) '将成本总金额组合到营业收入统计数据

With DataTables("利润表").DataCols  '用表达式列计算当月利润数据
    .Add("当月利润",Gettype(Integer), "IsNull([收入总金额],0) - ISNULL([支出总金额],0) - ISNULL([费用总金额],0) - ISNULL([成本总金额],0)")
End With
dt1.Show("利润表") '显示统计结果

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


加好友 发短信
等级:幼狐 帖子:129 积分:1199 威望:0 精华:0 注册:2013/3/7 11:20:00
  发帖心情 Post By:2014/10/31 11:05:00 [只看该作者]


下面红色部分是加入表达式列,我好像做的不对,总是弹出错误,但是把红色部分去掉,就一切正常了。你帮我看看该怎么加入表达式列啊。
Dim bd1 As New GroupTableBuilder("利润表",DataTables("营业收入"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("店面名称") '根据店面名称分组
bd1.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd1.Groups.AddDef("月度") '根据月度分组
bd1.Totals.AddDef("营业收入","收入总金额") '对营业收入进行统计
dt1 = bd1.BuildDataSource()
Dim bd2 As New GroupTableBuilder("统计表2",DataTables("固定支出"))
Dim dt2 As fxDataSource
bd2.Groups.AddDef("店面名称") '根据店面名称分组
bd2.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd2.Groups.AddDef("月度") '根据月度分组
bd2.Totals.AddDef("支出金额","支出总金额") '对支出金额进行统计
dt2 = bd2.BuildDataSource()
Dim bd3 As New GroupTableBuilder("统计表3",DataTables("费用支出"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("店面名称") '根据店面名称分组
bd3.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd3.Groups.AddDef("月度") '根据月度分组
bd3.Totals.AddDef("费用金额","费用总金额") '对费用金额进行统计
dt3 = bd3.BuildDataSource()
Dim bd4 As New GroupTableBuilder("统计表4",DataTables("成本支出"))
Dim dt4 As fxDataSource
bd4.Groups.AddDef("店面名称") '根据店面名称分组
bd4.Groups.AddDef("月度", DateGroupEnum.Year, "年度")
bd4.Groups.AddDef("月度") '根据月度分组
bd4.Totals.AddDef("成本金额","成本总金额") '对成本金额进行统计
dt4 = bd4.BuildDataSource()
Dim nms As String() = {"店面名称","年度","月度"} '指定连接列
dt1.Combine(nms,dt2,nms) '将支出总金额组合到营业收入统计数据
dt1.Combine(nms,dt3,nms) '将费用总金额组合到营业收入统计数据
dt1.Combine(nms,dt4,nms) '将成本总金额组合到营业收入统计数据

With DataTables("利润表").DataCols  '用表达式列计算当月利润数据
    .Add("当月利润",Gettype(Integer), "IsNull([收入总金额],0) - ISNULL([支出总金额],0) - ISNULL([费用总金额],0) - ISNULL([成本总金额],0)")
End With
dt1.Show("利润表") '显示统计结果


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


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

 是不是生成的表没有这些对应的列?

 

 具体报什么错?


 回到顶部