以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]组合多个统计结果后如何增加汇总行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=64754)

--  作者:huangfanzi
--  发布时间:2015/2/28 21:59:00
--  [求助]组合多个统计结果后如何增加汇总行
代码如下,这段代码执行后我希望有汇总行,并且导出至EXCEL后这个汇总行也存在
Dim bd1 As New SQLGroupTableBuilder("统计表1","销售结算台账")
Dim dt1 As fxDataSource
bd1.C
bd1.Groups.AddDef("公司") \'根据公司分组
bd1.Totals.AddDef("结算金额","发货金额") \'对金额进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New SQLGroupTableBuilder("统计表2","销售收款台账")
Dim dt2 As fxDataSource
bd2.C
bd2.Groups.AddDef("公司") \'根据公司分组
bd2.Totals.AddDef("金额","收款金额") \'对金额进行统计
dt2 = bd2.BuildDataSource()

dt1.Combine("公司",dt2,"公司") \'将收款数据组合到销售统计数据


Tables("销售款项查询_Table1").DataSource = dt1 \'将统计结果绑定到Table
With DataTables("销售款项查询_Table1").DataCols  \'用表达式列计算应收款
    .Add("应收款",Gettype(Double), "IsNull([发货金额],0) - ISNULL([收款金额],0)")
End With

我目前用的增加汇总行的代码如下:
With Tables("销售款项查询_Table1")
    .Cols("发货金额").GrandTotal = True \'指定要合计的列
    .Cols("收款金额").GrandTotal = True
    .Cols("应收款").GrandTotal = True
    .GrandTotal = True \'显示合计模式
End With
这个汇总代码在导出EXCEL后汇总行不会出现,请老师看看如何解决!

--  作者:有点甜
--  发布时间:2015/3/1 9:53:00
--  

设置成汇总模式,然后用SaveExcel方法。

 

Dim t As Table = Tables("表A")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = "第四列"
g.Caption = "合计"
t.SubtotalGroups.Add(g)

t.Subtotal()

t.SaveExcel("C:\\test.xls","表A")


--  作者:don
--  发布时间:2015/3/1 11:11:00
--  
也可这样:


Dim sq1,sq2 As String
sq1 = "Select  公司,结算金额 As 发货金额, 0 As 收款金额, 结算金额 As 应收款 F rom{销售结算台账}"
sq2 = "Select  公司,0 As 发货金额, 金额 As 收款金额, -金额 As 应收款 F rom{销售收款台账}"

Dim bd1 As New GroupTableBuilder("统计",sq1 & " Union All " & sq2)
bd1.Groups.AddDef("公司") \'根据公司分组
bd1.Totals.AddDef("发货金额") \'统计
bd1.Totals.AddDef("收款金额") \'统计
bd1.Totals.AddDef("应收款") \'统计
bd1.VerticalTotal = True \'自动垂直汇总
Dim t1 As Table = Tables("窗口1_Table1")

t1.DataSource =bd1.BuildDataSource()