以文本方式查看主题

-  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、我贴出部分代码。


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



--  作者:天宇科技
--  发布时间: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


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


--  作者:天宇科技
--  发布时间: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
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:信达食堂管理00.rar


--  作者:有点蓝
--  发布时间:2021/4/26 9:18:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:进销存9.zip


--  作者:天宇科技
--  发布时间:2021/4/26 13:55:00
--  
蓝版,你用的是下面的代码吧,提示这个.

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

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="年,月"