Foxtable(狐表)用户栏目专家坐堂 → 增加选择日期计件统计


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

主题:增加选择日期计件统计

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


加好友 发短信
等级:一尾狐 帖子:446 积分:2871 威望:0 精华:0 注册:2022/3/25 7:44:00
增加选择日期计件统计  发帖心情 Post By:2023/6/10 7:43:00 [只看该作者]

做一个计件工资表,上面有很多个月份日期,如何实现选择日期统计,我把筛选和统计代码放一个按键统计不对,试了几次统计不对,蓝老师帮忙看看,谢谢
图片点击可在新窗口打开查看此主题相关图片如下:统计截图说明.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:106320 积分:540735 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/10 8:59:00 [只看该作者]


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


加好友 发短信
等级:一尾狐 帖子:446 积分:2871 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2023/6/10 9:15:00 [只看该作者]

是把筛选和统计放在一个按键还是分开?

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


加好友 发短信
等级:超级版主 帖子:106320 积分:540735 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/10 9:21:00 [只看该作者]

根据自己的需要咯。如果需要分别看筛选、统计的不同结果,就分开。如果只需要一个结果,就合并到一起

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


加好友 发短信
等级:一尾狐 帖子:446 积分:2871 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2023/6/10 9:52:00 [只看该作者]

代码放在按键事件里面,统计出来结果不是指定日期,还是统计出来很多个月,把筛选代码放前面的,统计代码放后面

Dim Filter As String
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "输入日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "输入日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("计件统计").Filter = Filter
End If

 

Dim bd1 As New GroupTableBuilder("统计表1", DataTables("计件统计"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("姓名") '根据型号分组
bd1.Totals.AddDef("数量", "数量") '对数量进行统计
bd1.Totals.AddDef("金额", "金额") '对金额进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2", DataTables("计件统计"))
Dim dt2 As fxDataSource
bd2.Groups.AddDef("姓名1") '根据型号分组
bd2.Totals.AddDef("数量1", "数量") '对数量进行统计
bd2.Totals.AddDef("金额1", "金额") '对金额进行统计
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3", DataTables("计件统计"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("姓名2") '根据型号分组
bd3.Totals.AddDef("数量2", "数量") '对数量进行统计
bd3.Totals.AddDef("金额2", "金额") '对金额进行统计
dt3 = bd3.BuildDataSource()

Dim bd4 As New GroupTableBuilder("统计表4", DataTables("计件统计"))
Dim dt4 As fxDataSource
bd4.Groups.AddDef("姓名3") '根据型号分组
bd4.Totals.AddDef("数量3", "数量") '对数量进行统计
bd4.Totals.AddDef("金额3", "金额") '对金额进行统计
dt4 = bd4.BuildDataSource()

Dim bd5 As New GroupTableBuilder("统计表5", DataTables("计件统计"))
Dim dt5 As fxDataSource
bd5.Groups.AddDef("姓名4") '根据型号分组
bd5.Totals.AddDef("数量4", "数量") '对数量进行统计
bd5.Totals.AddDef("金额4", "金额") '对金额进行统计
dt5 = bd5.BuildDataSource()

Dim bd6 As New GroupTableBuilder("统计表6", DataTables("计件统计"))
Dim dt6 As fxDataSource
bd6.Groups.AddDef("姓名5") '根据型号分组
bd6.Totals.AddDef("数量5", "数量") '对数量进行统计
bd6.Totals.AddDef("金额5", "金额") '对金额进行统计
dt6 = bd6.BuildDataSource()

dt1.Combine("姓名", dt2, "姓名1") '将销售统计数据组合到进货统计数据
dt1.Combine("姓名", dt3, "姓名2") '将退货统计数据组合到进货统计数据
dt1.Combine("姓名", dt4, "姓名3") '将销售统计数据组合到进货统计数据
dt1.Combine("姓名", dt5, "姓名4") '将退货统计数据组合到进货统计数据
dt1.Combine("姓名", dt6, "姓名5") '将退货统计数据组合到进货统计数据

Tables("汇总窗_Table1").DataSource = dt1 '将统计结果绑定到Table
With DataTables("汇总窗_Table1").DataCols '用表达式列计算库存数据
    .Add("合计数量", GetType(Integer), "IsNull([数量],0) + ISNULL([数量1],0) + ISNULL([数量2],0)+IsNull([数量3],0) + ISNULL([数量4],0) + ISNULL([数量5],0)")
    .Add("合计金额", GetType(Double), "IsNull([金额],0) + ISNULL([金额1],0) + ISNULL([金额2],0)+IsNull([金额3],0) + ISNULL([金额4],0) + ISNULL([金额5],0)")
End With


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

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


加好友 发短信
等级:超级版主 帖子:106320 积分:540735 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/10 10:01:00 [只看该作者]

详解GroupTableBuilder

下面有些内容比较抽象,在接触具体的示例前,会比较难以理解,没有关系,先大概了解一下即可。 

GroupTableBuilder包括以下属性:

Caption:           字符型,指定新生成统计表的标题。
Groups:            集合,用于添加分组列
Totals:            集合,用于添加统计列。
VerticalTotal:     逻辑型,设为True,垂直方向自动增加汇总行。参考:垂直汇总
GrandProportion:   逻辑型,是否生成总占比。 参考:分组统计之占比分析
GroupProportion:   逻辑型,是否生成分组占比。参考:分组统计之占比分析
SamePeriodGrowth:  逻辑型,是否生成同比增长率。参考: 分组统计之增长率分析
CircleGrowth:      逻辑型,是否生成环比增长率。参考: 分组统计之增长率分析
Subtotal:          逻辑型,设为True,将对分组统计结果进行二次统计,生成汇总模式。 参考:自动生成汇总模式
SubtotalLevel:     整数型,根据多少个分组生成汇总模式。 参考:自动生成汇总模式
Decimals:          整数型,用于设置统计结果要保留的小数位数,默认为4位。
Filter:            字符型,如果只是对SourceDataTable中的部分数据进行统计,可用Filter属性设置条件。
请参考表达式的运算符和函数 和 条件表达式



Dim bd1 As New GroupTableBuilder("统计表1", DataTables("计件统计"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("姓名") '根据型号分组
bd1.Totals.AddDef("数量", "数量") '对数量进行统计
bd1.Totals.AddDef("金额", "金额") '对金额进行统计

bd1.Filter = Filter
dt1 = bd1.BuildDataSource()

……

……

bd2.Filter = Filter

……

bd3......


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


加好友 发短信
等级:一尾狐 帖子:446 积分:2871 威望:0 精华:0 注册:2022/3/25 7:44:00
  发帖心情 Post By:2023/6/10 10:18:00 [只看该作者]

感谢指导,终于可以指定需求统计,谢谢

 回到顶部