以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教汇总模式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=117431)

--  作者:huizhong
--  发布时间:2018/4/12 13:12:00
--  请教汇总模式

老师,我看了开发指南-杂谈中的“自定义汇总”,但是例子中是一层分组,我是三层分组,不会弄了,您帮忙给看看

 

Dim t As Table = Tables("公司业绩查询窗口_Table1")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = True
t.TreeVisible = True
t.SpillNode = True

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "立项日期"
g.TotalOn = "立项合同标的额,立项单毛利,立项单毛利率"
g.Caption = "{0}月"
g.DateGroup = DateGroupEnum.Month
t.SubtotalGroups.Add(g)

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.Subtotal()

 

Dim r As Row
For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.IsGroup \'如果是分组行
        Dim f As String = "所属公司 = \'" & r("所属公司") & "\'"
        Dim v As String = " 立项数量:" & t.Compute("Count(项目编号)",f)
        r("项目编号") = "" & r("项目编号") & v
    End If
Next


--  作者:有点甜
--  发布时间:2018/4/12 14:41:00
--  
上传具体实例测试。说明你最后需要达到的效果。
--  作者:huizhong
--  发布时间:2018/4/12 17:09:00
--  

以下内容为程序代码:

1 Dim t As Table = Tables("公司业绩查询窗口_Table1")
2 Dim g As Subtotalgroup
3 t.SubtotalGroups.Clear()
4 t.GroupAboveData = True
5 t.TreeVisible = True
6 t.SpillNode = True
7
8 g = New Subtotalgroup
9 g.Aggregate = AggregateEnum.Sum
10 g.GroupOn = "立项日期"
11 g.TotalOn = "立项合同标的额,立项单毛利,立项单毛利率"
12 g.Caption = "{0}月"
13 g.DateGroup = DateGroupEnum.Month
14 t.SubtotalGroups.Add(g)
15
16 g = New Subtotalgroup
17 g.Aggregate = AggregateEnum.Sum
18 g.GroupOn = "所属公司"
19 g.TotalOn = "立项合同标的额,立项单毛利,立项单毛利率"
20 g.Caption = "{0}"
21 t.SubtotalGroups.Add(g)
22
23 g = New Subtotalgroup
24 g.Aggregate = AggregateEnum.Sum
25 g.GroupOn = "*"
26 g.TotalOn = "立项合同标的额,立项单毛利,立项单毛利率"
27 g.Caption = "总计"
28 t.SubtotalGroups.Add(g)
29
30 t.Subtotal()
31
32 Dim r As Row
33 For i As Integer = 0 To t.Rows.Count(True) - 1
34 r = t.Rows(i,True)
35 If r.IsGroup \'如果是分组行
36 Dim f As String = "所属公司 = \'" & r("所属公司") & "\'"
37 Dim v As String = " 立项数量:" & t.Compute("Count(项目编号)",f)
38 r("项目编号") = "" & r("项目编号") & v
39 End If
40 Next

 

老师,已将代码上传,执行后的截图在附件中

共三个分组,分别为:立项日期;所属公司;总计,以上代码只实现了对“所属公司”分组的立项数量的统计,但是,对于立项日期和总计实现立项数量的统计,如何设置代码?

 

 


此主题相关图片如下:截图.png
按此在新窗口浏览图片
[此贴子已经被作者于2018/4/12 17:23:47编辑过]

--  作者:狐狸爸爸
--  发布时间:2018/4/12 17:22:00
--  
请上传一个直接运行的例子测试,并具体说明问题,这样工程师可以直接帮你写好。
分剖帮你解决问题,工程师还得现根据你的代码,设计一个相同结构的表,输入测试数据。

--  作者:有点甜
--  发布时间:2018/4/12 17:40:00
--  

判断等级,处理,如

 

For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.IsGroup \'如果是分组行
        If r.Level = 0 Then
            Dim f As String = "所属公司 = \'" & r("所属公司") & "\'"
            Dim v As String = " 立项数量:" & t.Compute("Count(项目编号)",f)
            r("项目编号") = "" & r("项目编号") & v
        ElseIf r.level = 1 Then
           
        ElseIf r.level = 2 Then
           
        End If
    End If
Next


--  作者:huizhong
--  发布时间:2018/4/12 18:08:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目1.foxdb

 

 

老师:共三个分组,分别为:立项日期;所属公司;总计,代码只实现了对“所属公司”分组的立项数量的统计,但是,对于“立项日期”和“总计”实现立项数量的统计,应如何设置代码?

您受累给指导一下


--  作者:有点甜
--  发布时间:2018/4/12 18:49:00
--  

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

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "立项日期"
g.TotalOn = "立项标的"
g.Caption = "{0}月"
g.DateGroup = DateGroupEnum.Month
t.SubtotalGroups.Add(g)

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.Subtotal()

Dim r As Row
For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.IsGroup \'如果是分组行
       
        If r.Level = -1 Then
            Dim f As String = ""
            Dim v As String = " 总计:" & t.Compute("Count(立项编号)",f)
            r("立项编号") = v
        ElseIf r.level = 0 Then
            Dim f As String = "所属公司 = \'" & r("所属公司") & "\'"
            Dim v As String = " 立项数量:" & t.Compute("Count(立项编号)",f)
            r("立项编号") = v
        ElseIf r.level = 1 Then
            Dim sum As Double = 0
            For j As Integer = i+1 To t.Rows.count(True)-1
                If t.Rows(j,True).IsGroup Then
                    Exit For
                Else
                    sum += 1
                End If
            Next
            Dim v As String = " 立项数量:" & sum
            r("立项编号") = v
        End If
       
    End If
Next


--  作者:huizhong
--  发布时间:2018/4/13 14:00:00
--  
谢谢老师,太感谢您了