以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 再求分组统计 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=163816) |
||||
-- 作者:天宇科技 -- 发布时间:2021/4/25 20:39:00 -- 再求分组统计 蓝版,没有办法,学了几天的帮助,也请教了大侠,还是没有解决我的问题。 1、入库明细表里有字段:1、入库时间 2、入库商品 3、入库数量 4、入库金额 2、出库明细表里有字段:1、出库时间 2、出库商品 3、出库数量 4、出库金额 3、想得到下图中的统计数据 4、我贴出部分代码。 |
||||
-- 作者:天宇科技 -- 发布时间:2021/4/25 20:41:00 -- Dim g As New GroupTableBuilder("统计表1", DataTables("入库明细")) Dim dt1 As fxDataSource g.Groups.AddDef("入库日期", DateGroupEnum.Year, "年") g.Groups.AddDef("入库日期", "月") g.Groups.AddDef("商品名称") g.Totals.AddDef("入库数量", "", "本月入库_数量") g.Totals.AddDef("入库金额", "", "本月入库_金额") dt1 = g.BuildDataSource() Dim g1 As New GroupTableBuilder("统计表2",DataTables("出库明细")) Dim dt2 As fxDataSource g1.Groups.AddDef("出库日期", DateGroupEnum.Year, "年") g1.Groups.AddDef("出库日期", "月") g1.Groups.AddDef("商品名称") g1.Totals.AddDef("出库数量", "", "本月出库_数量") g1.Totals.AddDef("出库金额", "", "本月出库_金额") dt2 = g1.BuildDataSource() Dim nms As String() = {"年","月","商品名称"} \'指定连接列 dt1.Combine(nms,dt2,nms) \'将销售统计数据组合到进货统计数据 Tables("出入库月统计_月汇总").DataSource = dt1 \'将统计结果绑定到Table Dim g As New GroupTableBuilder("统计表1", DataTables("入库明细")) g.Groups.AddDef("入库日期", DateGroupEnum.Year, "年") g.Groups.AddDef("入库日期", "月") g.Groups.AddDef("商品名称") g.Totals.AddDef("入库数量") g.Totals.AddDef("入库金额") g.Totals.AddDef("入库单价",AggregateEnum.Average ) g.Filter = "商品名称 is not null" Dim dt As DataTable = g.Build(True) |
||||
-- 作者:天宇科技 -- 发布时间:2021/4/25 20:41:00 -- DataTables("统计表").DeleteFor("") Dim dr As DataRow For Each r As DataRow In dt.DataRows dr = DataTables("统计表").AddNew dr("年") = r("年") dr("月") = r("月") dr("商品名称") = r("商品名称") dr("本月入库数量") = r("入库数量") dr("本月入库金额") = r("入库金额") dr("本月入库平均单价") = r("入库单价") Next Tables("统计表").Sort = "年,月" For Each r As Row In Tables("统计表").Rows Dim d As Date = new Date(r("年"),r("月"),1) dr = DataTables("统计表").Find("商品名称 = \'" & r("商品名称") & "\' And 年 <=" & r("年") & " and 月 <" & r("月") , "年 desc,月 desc") If dr IsNot Nothing Then r("上月结存数量") = dr("本月入库数量") r("上月结存金额") = dr("本月入库金额") End If Next MainTable = Tables("统计表")
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/25 20:59:00 -- 去掉下面代码 Dim g As New GroupTableBuilder("统计表1", DataTables("入库明细")) g.Groups.AddDef("入库日期", DateGroupEnum.Year, "年") g.Groups.AddDef("入库日期", "月") g.Groups.AddDef("商品名称") g.Totals.AddDef("入库数量") g.Totals.AddDef("入库金额") g.Totals.AddDef("入库单价",AggregateEnum.Average ) g.Filter = "商品名称 is not null" Dim dt As DataTable = g.Build(True) MainTable = Tables("统计表") 然后把3楼代码里"统计表"全部改为"出入库月统计_月汇总"
|
||||
-- 作者:天宇科技 -- 发布时间:2021/4/25 21:20:00 -- 你说的是这样改代码吗?提示错误如下图。我是事先建好表,然后绑定在窗口上的。 Dim g As New GroupTableBuilder("统计表1", DataTables("入库明细")) Dim dt1 As fxDataSource g.Groups.AddDef("入库日期", DateGroupEnum.Year, "年") g.Groups.AddDef("入库日期", "月") g.Groups.AddDef("商品名称") g.Totals.AddDef("入库数量", "", "本月入库_数量") g.Totals.AddDef("入库金额", "", "本月入库_金额") dt1 = g.BuildDataSource() Dim g1 As New GroupTableBuilder("统计表2",DataTables("出库明细")) Dim dt2 As fxDataSource g1.Groups.AddDef("出库日期", DateGroupEnum.Year, "年") g1.Groups.AddDef("出库日期", "月") g1.Groups.AddDef("商品名称") g1.Totals.AddDef("出库数量", "", "本月出库_数量") g1.Totals.AddDef("出库金额", "", "本月出库_金额") dt2 = g1.BuildDataSource() Dim nms As String() = {"年","月","商品名称"} \'指定连接列 dt1.Combine(nms,dt2,nms) \'将销售统计数据组合到进货统计数据 Tables("出入库月统计_月汇总").DataSource = dt1 \'将统计结果绑定到Table DataTables("统计表").DeleteFor("") Dim dr As DataRow For Each r As DataRow In dt.DataRows dr = DataTables("统计表").AddNew dr("年") = r("年") dr("月") = r("月") dr("商品名称") = r("商品名称") dr("本月入库数量") = r("入库数量") dr("本月入库金额") = r("入库金额") dr("本月入库平均单价") = r("入库单价") Next Tables("统计表").Sort = "年,月" For Each r As Row In Tables("统计表").Rows Dim d As Date = new Date(r("年"),r("月"),1) dr = DataTables("统计表").Find("商品名称 = \'" & r("商品名称") & "\' And 年 <=" & r("年") & " and 月 <" & r("月") , "年 desc,月 desc") If dr IsNot Nothing Then r("上月结存数量") = dr("本月入库数量") r("上月结存金额") = dr("本月入库金额") End If Next |
||||
-- 作者:天宇科技 -- 发布时间:2021/4/25 21:32:00 -- 这样也报同样的错。 Dim g As New GroupTableBuilder("统计表1", DataTables("入库明细")) Dim dt1 As fxDataSource g.Groups.AddDef("入库日期", DateGroupEnum.Year, "年") g.Groups.AddDef("入库日期", "月") g.Groups.AddDef("商品名称") g.Totals.AddDef("入库数量", "", "本月入库_数量") g.Totals.AddDef("入库金额", "", "本月入库_金额") dt1 = g.BuildDataSource() Dim g1 As New GroupTableBuilder("统计表2",DataTables("出库明细")) Dim dt2 As fxDataSource g1.Groups.AddDef("出库日期", DateGroupEnum.Year, "年") g1.Groups.AddDef("出库日期", "月") g1.Groups.AddDef("商品名称") g1.Totals.AddDef("出库数量", "", "本月出库_数量") g1.Totals.AddDef("出库金额", "", "本月出库_金额") dt2 = g1.BuildDataSource() Dim nms As String() = {"年","月","商品名称"} \'指定连接列 dt1.Combine(nms,dt2,nms) \'将销售统计数据组合到进货统计数据 Tables("出入库月统计_月汇总").DataSource = dt1 \'将统计结果绑定到Table DataTables("出入库月统计_月汇总").DeleteFor("") Dim dr As DataRow For Each r As DataRow In dt.DataRows dr = DataTables("出入库月统计_月汇总").AddNew dr("年") = r("年") dr("月") = r("月") dr("商品名称") = r("商品名称") dr("本月入库数量") = r("入库数量") dr("本月入库金额") = r("入库金额") dr("本月入库平均单价") = r("入库单价") Next Tables("出入库月统计_月汇总").Sort = "年,月" For Each r As DataRow In dt.DataRows Dim d As Date = new Date(r("年"),r("月"),1) dr = DataTables("出入库月统计_月汇总").Find("商品名称 = \'" & r("商品名称") & "\' And 年 <=" & r("年") & " and 月 <" & r("月") , "年 desc,月 desc") If dr IsNot Nothing Then r("上月结存数量") = dr("本月入库数量") r("上月结存金额") = dr("本月入库金额") End If Next
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/25 21:39:00 -- 用5楼代码,加一句 Tables("出入库月统计_月汇总").DataSource = dt1 \'将统计结果绑定到Table dim dt as datatable = dataTables("出入库月统计_月汇总")
|
||||
-- 作者:foxtablefanse -- 发布时间:2021/4/26 0:24:00 --
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/26 9:18:00 --
|
||||
-- 作者:天宇科技 -- 发布时间:2021/4/26 13:55:00 -- 蓝版,你用的是下面的代码吧,提示这个. Dim g As New GroupTableBuilder("t1", DataTables("入库明细")) Dim dt1 As fxDataSource g.Groups.AddDef("入库日期", DateGroupEnum.Year, "年") g.Groups.AddDef("入库日期", "月") g.Groups.AddDef("商品名称") g.Totals.AddDef("入库数量", "", "本月_入库数量") g.Totals.AddDef("入库金额", "", "本月_入库金额") dt1 = g.BuildDataSource() Dim g1 As New GroupTableBuilder("t2",DataTables("出库明细")) Dim dt2 As fxDataSource g1.Groups.AddDef("出库日期", DateGroupEnum.Year, "年") g1.Groups.AddDef("出库日期", "月") g1.Groups.AddDef("商品名称") g1.Totals.AddDef("出库数量", "", "本月_出库数量") g1.Totals.AddDef("出库金额", "", "本月_出库金额") dt2 = g1.BuildDataSource() Dim nms As String() = {"年","月","商品名称"} \'指定连接列 dt1.Combine(nms,dt2,nms) \'将销售统计数据组合到进货统计数据? \'dt1.Show("t1") \'显示统计结果 Tables("统计表").DataSource = dt1 \'将统计结果绑定到Table Dim dt As DataTable = DataTables("t1") DataTables("统计表").DeleteFor("") Dim dr As DataRow For Each r As DataRow In dt.DataRows dr = DataTables("统计表").AddNew dr("年") = r("年") dr("月") = r("月") dr("商品名称") = r("商品名称") dr("本月入库数量") = r("入库数量") dr("本月入库金额") = r("入库金额") If r("入库数量")>0 Then dr("本月入库平均单价") =r("入库金额")/r("入库数量") End If dr("本月出库数量") = r("出库数量") dr("本月出库金额") = r("出库金额") If r("出库数量")>0 Then dr("本月出库平均单价") =r("出库金额")/r("出库数量") End If dr("本月结存数量")=r("入库数量") - r("出库数量") dr("本月结存金额")=r("入库金额") - r("出库金额") Dim drs As DataRow=DataTables("统计表").Find("商品名称 = \'" & r("商品名称") & "\' And 年 =" & r("年") & " and 月 =" & r("月")-1, "年 desc,月 desc") If drs IsNot Nothing Then dr("上月结存数量")=drs("本月结存数量") dr("上月结存金额")=drs("本月结存金额") End If Next Tables("统计表").Sort="年,月"
|