以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  【自定义汇总模式】  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127749)

--  作者:wangjx817
--  发布时间:2018/11/21 10:40:00
--  【自定义汇总模式】
为什么我按照帮助文档中的格式设置自定义汇总模式,不知为什么哪里出错而未出现设计的结果。如下图所示:

图片点击可在新窗口打开查看此主题相关图片如下:l$x@w5q@r0(ujgjyn0wobf.png
图片点击可在新窗口打开查看

我设计的代码是:
Dim t As Table = Tables("松北所DMA分区统计表")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "管理站"
g.TotalOn = "口径_100,口径_150,口径_200,口径_300,口径_50,口径_80,单路,多路,合计"
g.Caption = "{0}"
t.SubtotalGroups.Add(g)
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = "口径_100,口径_150,口径_200,口径_300,口径_50,口径_80,单路,多路,合计"
g.Caption = "总计"
t.SubtotalGroups.Add(g)
t.Sort = "管理站,小区编号" \'指定排序字段
t.Subtotal(True) \'生成汇总模式

Dim r As Row
For i As Integer = 0 To t.Rows.Count(True) - 2
    r = t.Rows(i,True)
    If r.IsGroup \'如果是分组行
        Dim f As String = "管理站 = \'" & r("管理站") & "\'"
        Dim v As String = " DMA小区数:" & t.Compute("Count(小区编号)",f)
        v = v & " 考核表数量:" & t.Compute("Sum(合计)",f)
        v = v & " 单路数量:" & t.Compute("Sum(单路)",f)
        v = v & " 多路数量:" & t.Compute("Sum(多路)",f)
        r("管理站") = "管理站:" & r("管理站") & v
    End If
Next

--  作者:有点甜
--  发布时间:2018/11/21 10:51:00
--  

试试改成

 

For i As Integer = 0 To t.Rows.Count(True) - 2
    r = t.Rows(i,True)
    If r.IsGroup \'如果是分组行

        r = t.rows(i-1, true)


--  作者:wangjx817
--  发布时间:2018/11/21 12:27:00
--  
统计结果是出来,不知怎么会出现在最上方的三行,而且将原有表格的其中三行数据打乱了。
--  作者:wangjx817
--  发布时间:2018/11/21 12:27:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:剪辑_8.jpg
图片点击可在新窗口打开查看

--  作者:wangjx817
--  发布时间:2018/11/21 12:46:00
--  
我找方法了:
Dim r,r1 As Row
For i As Integer = 0 To t.Rows.Count(True) - 2
    r = t.Rows(i,True)
    If r.IsGroup \'如果是分组行
        r1 = t.rows(i-1, True)
        Dim f As String = "管理站 = \'" & r1("管理站") & "\'"

--  作者:wangjx817
--  发布时间:2018/11/21 12:47:00
--  
谢谢,在你的提示下,我想到方法了,已经解决了。
--  作者:wangjx817
--  发布时间:2018/11/22 15:34:00
--  
二级分组汇总时,又出现问题,希望帮忙老师查找一下问题。就是二级的自定义汇总结果不出来:如下图所示:

图片点击可在新窗口打开查看此主题相关图片如下:剪辑_16.jpg
图片点击可在新窗口打开查看
我编写的代码是:
Dim t As Table = Tables("松北所DMA分区统计表")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "分块"
g.Caption = "{0}"
t.SubtotalGroups.Add(g)
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "管理站"
g.Caption = "{0}"
t.SubtotalGroups.Add(g)
\'g = New Subtotalgroup
\'g.Aggregate = AggregateEnum.Sum
\'g.GroupOn = "*"
\'g.Caption = "总计"
\'t.SubtotalGroups.Add(g)
t.Subtotal()

Dim r As Row
For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.Level = 0 Then
        If r.IsGroup \'如果是分组行
            Dim f As String = "管理站 = \'" & r("序号") & "\'"
            Dim v As String = "  DMA小区:" & t.Compute("Count(小区编号)",f) & "个"
            v = v & "  考核表:" & t.Compute("Sum(合计)",f) & "个"
            v = v & "  单路表:" & t.Compute("Sum(单路)",f) & "个"
            v = v & "  多路表:" & t.Compute("Sum(多路)",f) & "个"
            r("序号") = "管理站:" & r("序号") & v
        ElseIf r.Level = 1 Then
            Dim pr As Row = t.Rows(r.Index - 1, True)
            Dim f As String = "管理站 = \'" & pr("管理站") & "\' and 分块 = \'" & pr("分块") & "\'"
            Dim v As String = "  DMA小区:" & t.Compute("Count(小区编号)",f) & "个"
            v = v & "  考核表:" & t.Compute("Sum(合计)",f) & "个"
            v = v & "  单路表:" & t.Compute("Sum(单路)",f) & "个"
            v = v & "  多路表:" & t.Compute("Sum(多路)",f) & "个"
            r("序号") = pr("管理站") & "-" & pr("分块") & ":" & v
        End If
    End If
Next




--  作者:有点甜
--  发布时间:2018/11/22 17:42:00
--  

看看,这样写 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=124584&skin=0

 

如果自己不会,实例发上来测试。


--  作者:wangjx817
--  发布时间:2018/11/22 21:28:00
--  
OK,看你的链接实例基本理解,好像fo?x?ta?b?leoxtable帮助文档中的多级代码编写有误。非常感谢!
--  作者:有点甜
--  发布时间:2018/11/22 21:57:00
--  
以下是引用wangjx817在2018/11/22 21:28:00的发言:
OK,看你的链接实例基本理解,好像fo?x?ta?b?leoxtable帮助文档中的多级代码编写有误。非常感谢!

 

foxtable没有【多级代码】的,foxtable的例子,是一级分组的。