以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 组合统计 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52985) |
||||
-- 作者:zhangxl1964 -- 发布时间:2014/6/26 20:40:00 -- 组合统计 老师:你好! 在组合统计结果中增加一个期初数量和期初金额列 Dim Filter As String With e.Form.Controls("日期") If .Value Is Nothing Then Return End If End With Dim curD As Date=e.Form.Controls("日期").Value \'当前日期 Dim lastD As Date =e.Form.Controls("日期").Value.AddMonths(-1) \'上一个月的日期 Dim lastD2 As New Date(lastD.Year, lastD.Month, Date.DaysInMonth(lastD.Year,lastD.Month)) \'上个月的最后一天 If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 <= #" & curD & "#" & " And 日期 > #" & lastD2 & "#" 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() Dim bd2 As New GroupTableBuilder("统计表2",DataTables("销售")) Dim dt2 As fxDataSource bd2.Groups.AddDef("型号") \'根据型号分组 bd2.Totals.AddDef("销售_数量","销售_数量") \'对数量进行统计 bd2.Totals.AddDef("销售_金额","销售_金额") \'对金额进行统计 bd2.Totals.AddExp("期初_金额","期初_金额") \'对金额进行统计 bd2.Filter = Filter dt2 = bd2.BuildDataSource() Dim bd3 As New GroupTableBuilder("统计表3",DataTables("退货")) Dim dt3 As fxDataSource bd3.Groups.AddDef("型号") \'根据型号分组 bd3.Totals.AddDef("退货_数量","退货_数量") \'对数量进行统计 bd3.Totals.AddDef("退货_金额","退货_金额") \'对金额进行统计 bd3.Filter = Filter dt3 = bd3.BuildDataSource() dt1.Combine("型号",dt2,"型号") \'将销售统计数据组合到进货统计数据 dt1.Combine("型号",dt3,"型号") \'将退货统计数据组合到进货统计数据 Tables("统计_Table1").DataSource = dt1 \'将统计结果绑定到Table With DataTables("统计_Table1").DataCols \'用表达式列计算库存数据 .Add("期初_数量",Gettype(Double), "IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)") .Add("期初_金额",Gettype(Double), "IsNull([进货_金额],0) - ISNULL([销售_金额],0) - ISNULL([退货_金额],0)") End With \'上面代码为统计期初数据 \'下面代码为统计当期发生额 Filter = Filter & "日期 <= #" & curD & "#" 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() Dim bd2 As New GroupTableBuilder("统计表2",DataTables("销售")) Dim dt2 As fxDataSource bd2.Groups.AddDef("型号") \'根据型号分组 bd2.Totals.AddDef("销售_数量","销售_数量") \'对数量进行统计 bd2.Totals.AddDef("销售_金额","销售_金额") \'对金额进行统计 bd2.Totals.AddExp("期初_金额","期初_金额") \'对金额进行统计 bd2.Filter = Filter dt2 = bd2.BuildDataSource() Dim bd3 As New GroupTableBuilder("统计表3",DataTables("退货")) Dim dt3 As fxDataSource bd3.Groups.AddDef("型号") \'根据型号分组 bd3.Totals.AddDef("退货_数量","退货_数量") \'对数量进行统计 bd3.Totals.AddDef("退货_金额","退货_金额") \'对金额进行统计 bd3.Filter = Filter dt3 = bd3.BuildDataSource() dt1.Combine("型号",dt2,"型号") \'将销售统计数据组合到进货统计数据 dt1.Combine("型号",dt3,"型号") \'将退货统计数据组合到进货统计数据 Tables("统计_Table1").DataSource = dt1 \'将统计结果绑定到Table With DataTables("统计_Table1").DataCols \'用表达式列计算库存数据 .Add("库存_数量",Gettype(Double), "IsNull([期初_数量],0) - IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)") .Add("库存_金额",Gettype(Double), "IsNull([期初_金额],0) - IsNull([进货_金额],0) - ISNULL([销售_金额],0) - ISNULL([退货_金额],0)") End With Tables("统计_Table1").SetColVisibleWidth("型号|80|期初_数量|80|期初_金额|80|进货_数量|80|进货_金额|80|销售_数量|80|进货_金额|80|退货_数量|80|退货_金额|80|库存_数量|80|库存_金额|80") 怎样把期初和当期二次统计合并?
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/26 20:48:00 -- 例子发上来。 |
||||
-- 作者:zhangxl1964 -- 发布时间:2014/6/27 8:17:00 -- 例子在Foxtable的CaseStudy文件夹:组合统计结果.Table |
||||
-- 作者:有点甜 -- 发布时间:2014/6/27 9:14:00 -- 以下是引用zhangxl1964在2014-6-27 8:17:00的发言:
例子在Foxtable的CaseStudy文件夹:组合统计结果.Table
完全不一样的好吧?没有日期,没有动态添加的列,你的问题要额外处理,请把你的例子发上来。 |
||||
-- 作者:zhangxl1964 -- 发布时间:2014/6/27 9:21:00 -- 例子
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/27 9:59:00 -- 呃,不明白你的期初是指哪一段时间的。代码大致如下
Dim Filter1 As String With e.Form.Controls("日期") Dim Filter As String Dim curD As Date=e.Form.Controls("日期").Value \'当前日期 Filter = Filter & "日期 <= #" & curD & "#"
Dim dt1 As fxDataSource
Dim lastD As Date = curD.AddMonths(-1) \'上一个月的日期 With DataTables("统计_Table1").DataCols \'用表达式列计算库存数据 |
||||
-- 作者:zhangxl1964 -- 发布时间:2014/6/27 10:08:00 -- 期初是指“e.Form.Controls("日期")”的上一个月(包含)的日期。 不好意思,请问是做财务的吗? 财务上大多是以年、月统计。
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/27 10:11:00 -- 那你自己改一下filter的代码
Dim lastD As Date = curD.AddMonths(-1) \'上一个月的日期 |
||||
-- 作者:zhangxl1964 -- 发布时间:2014/6/27 10:55:00 -- 在组合统计结果中增加一个期初数量和期初金额列 显示:
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/27 10:58:00 -- 是说把 期初数量 和 库存数量 列显示在一起? |