以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何对汇总结果进行计算排序?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=46816)

--  作者:loongtai
--  发布时间:2014/2/28 8:45:00
--  [求助]如何对汇总结果进行计算排序?
如题,
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140228084300.jpg
图片点击可在新窗口打开查看
想对汇总结果的两个标准偏差1,2,进行1*2的计算,再按计算的结果进行排序
不知这能不能实现,如果不能实现,那单独对标准偏差1进行排序可否实现?

--  作者:Bin
--  发布时间:2014/2/28 8:48:00
--  
参考帮助http://www.foxtable.com/help/topics/1372.htm
--  作者:loongtai
--  发布时间:2014/2/28 8:57:00
--  
帮助看了,但好像没有能对所汇总的结果进行计算或是排序的。
--  作者:Bin
--  发布时间:2014/2/28 8:59:00
--  
以下复制自帮助



自定义排序

在默认情况下,Subtotal方法会根据分组列进行排序,然后再生成汇总模式。
Subtotal有一个可选参数,如果将其设置为True,那么在生成汇总模式时,可以自定义排序参数,而不是根据分组列排序。
例如根据日期和客户排序,分组列为客户,统计列为数量与金额,生成汇总模式:

Dim t As Table = Tables("订单")
Dim 
g As Subtotalgroup
t
.SubtotalGroups.Clear()
g = New Subtotalgroup
g
.Aggregate = AggregateEnum.Sum 
g
.GroupOn = "客户"
g
.TotalOn = "数量,金额" 
g
.Caption = "{0} 小计" 
t
.SubtotalGroups.Add(g)
g = New Subtotalgroup
g
.Aggregate = AggregateEnum.Sum
g
.GroupOn = "*" 
g
.TotalOn = "数量,金额"
g
.Caption = "总计"
t
.SubtotalGroups.Add(g)
t.Sort = 
"日期,客户" \'指定排序字段
t.Subtotal(
True\'生成汇总模式


--  作者:loongtai
--  发布时间:2014/2/28 9:03:00
--  
帮助里的好像是依据表中现有的列进行排序,而我所期望的排序并不是表中现有的列,而是按汇总的标准方差的大小来进行排列,方差小的排在前面。
--  作者:Bin
--  发布时间:2014/2/28 9:05:00
--  
那个没办法排序
--  作者:loongtai
--  发布时间:2014/2/28 9:17:00
--  
那有没有什么办法对汇总的结果进行操作呢?比如说建个新表,把分组列及汇总结果放进去,然后对这个表进行操作?
--  作者:Bin
--  发布时间:2014/2/28 9:24:00
--  
这个倒是可以的.


--  作者:lsy
--  发布时间:2014/2/28 9:48:00
--  

弄个窗口表:

Dim t As Table = Tables("订单")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "产品"
g.TotalOn = "数量"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)
t.Subtotal()
Dim r As Row
Tables(e.Form.Name & "_Table1").DataTable.DataRows.Clear()
For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.IsGroup Then
        Dim nr As Row = Tables(e.Form.Name & "_Table1").AddNew()
        nr("第一列") = r("产品")
        nr("第二列") = r("数量")
    End If
Next
Tables(e.Form.Name & "_Table1").Sort = "第二列"