以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]截止统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49438)

--  作者:有点甜
--  发布时间:2014/4/17 21:20:00
--  
 代码应该没有错,统计的两列,数据都是一样?
--  作者:有点甜
--  发布时间:2014/4/17 21:31:00
--  

 测试了一下,截至统计好像只能针对 日期 分组,不能再加上产品名称了。比如代码这样写

 

Dim g As New GroupTableBuilder("统计表1", DataTables("销售信息"))
g.Groups.AddDef("日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("日期", "月")
g.Totals.AddDef("数量")
g.Totals.AddDef("数量", "截止", True)
g.Build()
MainTable = Tables("统计表1")

 


--  作者:有点甜
--  发布时间:2014/4/17 21:39:00
--  
 楼主,如果你要针对 产品 进行截止的统计,看来是得在统计表生成以后,再用代码处理一下了。
--  作者:有点甜
--  发布时间:2014/4/17 22:11:00
--  

 上传个例子。


--  作者:Bin
--  发布时间:2014/4/18 9:25:00
--  
你这个跨年了,按月的话.不同年份的月怎么办?

如果按年月分组,不能正常统计.

--  作者:Bin
--  发布时间:2014/4/18 9:32:00
--  
设置分组统计,点击查看代码即可

Dim g As New GroupTableBuilder("统计表1", DataTables("表A"))
g.Groups.AddDef("日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("产品名称")
g.Totals.AddDef("数量",True)
g.Build()
MainTable = Tables("统计表1")

--  作者:有点甜
--  发布时间:2014/4/18 9:47:00
--  

 你的需求,用下面的代码就可以了。

 

Dim g As New GroupTableBuilder("统计表1", DataTables("表A"))
g.Groups.AddDef("日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("日期", "月")
g.Groups.AddDef("产品名称")
g.Totals.AddDef("数量")
g.Totals.AddDef("数量","截止",True)
g.Build()

For Each r As Row In Tables("统计表1")
    r("截止") = Tables("统计表1").Compute("sum(数量)", "产品名称 = \'" & r("产品名称") & "\' and 年 <= " & r("年") & " And 月 <= " & r("月"))
Next

MainTable = Tables("统计表1")


--  作者:don
--  发布时间:2014/4/18 18:13:00
--  
應該這樣:

Dim g As New GroupTableBuilder("统计表1", DataTables("表A"))
g.Groups.AddDef("日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("日期", "月")
g.Groups.AddDef("产品名称")
g.Totals.AddDef("数量")
g.Totals.AddDef("数量","截止",True)
g.Build()
Dim drs As List(of DataRow)
drs = DataTables("统计表1").Select("产品名称 > \'\'")
drs(0)("截止")  =  drs(0)("数量")
For n1 As Integer = 1 To drs.count-1
    If  drs(n1)("产品名称") = drs(n1-1)("产品名称") Then
        drs(n1)("截止")  = drs(n1-1)("截止") + drs(n1)("数量")
    Else
        drs(n1)("截止")  =  drs(n1)("数量")
    End If
Next
MainTable = Tables("统计表1")