以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于分组统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148929)

--  作者:裴保民
--  发布时间:2020/4/18 23:22:00
--  关于分组统计
现在有一个交易流水表字段有“交易日期”、“收入金额”、“支出金额” 需要做一个按日期(“月份”)分组统计出最近半年的数据

想实现 统计表中有“月”、“收入金额”、“支出金额” 和“收支差额”(“收入金额”-“支出金额” 该怎么实现?

如下代码对吗?实现不了想要的结果
Dim g As New GroupTableBuilder("最近几个月收支情况报表", DataTables("收支交易流水"))
g.Groups.AddDef("记账日期", "月份")
g.Totals.AddDef("收入金额")
g.Totals.AddDef("支出金额")
g.Filter = "[记账日期] >= #" & qsrq & "# And [记账日期] <= #" & jsrq & "#"
g.SubTotal = True
g.Build()\'\'
MainTable = Tables("最近几个月收支情况报表")
Tables("公用窗体_zjjgyszqkTable").DataSource = DataTables("最近几个月收支情况报表")
With DataTables("公用窗体_zjjgyszqkTable").DataCols  \'用表达式列计算库存数据
    .Add("收支差额",Gettype(Double), "IsNull([收入金额],0) - ISNULL([支出金额],0)")
End With
Tables("公用窗体_zjjgyszqkTable").SetColVisibleWidth("月份|100|收入金额|120|支出金额|120|收支差额|120")
Tables("公用窗体_zjjgyszqkTable").DataTable.DataCols("收入金额").SetFormat("0.00")
Tables("公用窗体_zjjgyszqkTable").DataTable.DataCols("支出金额").SetFormat("0.00")
Tables("公用窗体_zjjgyszqkTable").DataTable.DataCols("收支差额").SetFormat("0.00")
For Each c As Col In Tables("公用窗体_zjjgyszqkTable").Cols
    c.TextAlign = TextAlignEnum.Center
Next
DataTables("最近几个月收支情况报表").GlobalHandler.PrepareEdit=True
t = Tables("公用窗体_zjjgyszqkTable")
t.Cols("月份").GrandTotal = True \'指定要合计的列
t.Cols("收入金额").GrandTotal = True
t.Cols("支出金额").GrandTotal = True
t.Cols("收支差额").GrandTotal = True
t.Sort = "月份" \'指定排序字段
t.GrandTotal = True \'显示合计模式
t.Grid.Name = t.Name
AddHandler t.grid.Paint, AddressOf Grid_Paint

[此贴子已经被作者于2020/4/18 23:22:36编辑过]

--  作者:dj68301367
--  发布时间:2020/4/18 23:41:00
--  
Dim tb As Table = Tables("公用窗体_zjjgyszqkTable")
Dim dt As DataTable = tb.DataSource

Dim g As New GroupTableBuilder("最近几个月收支情况报表", DataTables("收支交易流水"))
g.Groups.AddDef("记账日期", DateGroupEnum.Month,"月份")
g.Totals.AddDef("收入金额")
g.Totals.AddDef("支出金额")
g.Filter = "[记账日期] >= ‘" & qsrq & "’ And [记账日期] <= ’" & jsrq & "‘“
g.SubTotal = True
tb.DataSource = g.BuildDataSource

If dt.DataCols.Contains("收支差额") = False Then \'用表达式列计算库存数据
    dt.DataCols.Add("收支差额",Gettype(Double), "IsNull([收入金额],0) - ISNULL([支出金额],0)")
End if
tb.SetColVisibleWidth("月份|100|收入金额|120|支出金额|120|收支差额|120")
dt.DataCols("收入金额").SetFormat("0.00")
dt.DataCols("支出金额").SetFormat("0.00")
dt.DataCols("收支差额").SetFormat("0.00")
For Each c As Col In tb.Cols
    c.TextAlign = TextAlignEnum.Center
Next
dt.GlobalHandler.PrepareEdit=True
t = Tables("公用窗体_zjjgyszqkTable")
t.Cols("月份").GrandTotal = True \'指定要合计的列
t.Cols("收入金额").GrandTotal = True
t.Cols("支出金额").GrandTotal = True
t.Cols("收支差额").GrandTotal = True
t.Sort = "月份" \'指定排序字段
t.GrandTotal = True \'显示合计模式
t.Grid.Name = t.Name
AddHandler t.grid.Paint, AddressOf Grid_Paint