以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教分类汇总句法。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135530)

--  作者:lanbor
--  发布时间:2019/5/29 8:40:00
--  请教分类汇总句法。
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 = "proc_lab"
g.TotalOn = "proc_zbsj,proc_jbsj,proc_gshj"
g.Aggregate = AggregateEnum.count 
g.TotalOn = "proc_bh"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)
请教:我希望在同一行实现对出勤人数计数,对出勤时间汇总,的分类显示方式;
请问这语句应该怎么写?
谢谢!



--  作者:有点甜
--  发布时间:2019/5/29 9:16:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/1964.htm

 


--  作者:lanbor
--  发布时间:2019/5/29 9:22:00
--  谢谢你:有点甜。
谢谢你指引:有点甜。
--  作者:lanbor
--  发布时间:2019/5/29 10:49:00
--  分类汇总再请教!
Dim t As Table = Tables("proc97")
Dim v1,v2,v3,v4,f1 As String
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False  \'分组行不在数据之前
t.TreeVisible = False  \'显示目录树
t.SpillNode = False  \'
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "proc_zw" \'"*"
\'g.TotalOn = "proc_zbsj,proc_jbsj,proc_gshj"
g.Caption = "{0}" \'"总计"
t.SubtotalGroups.Add(g)
t.Subtotal()
Dim r1 As Row
For i1 As Integer =0 To t.Rows.Count(True) - 1
    r1=t.Rows(i1,True)
    If r1.IsGroup Then
        f1="proc_zw = \'"& r1("proc_zw") &"\'"       ‘按员工职务分类汇总
        r1("proc_bh")=t.Compute("count(proc_bh)",f1)
        r1("proc_zbsj")=t.Compute("sum(proc_zbsj)",f1)
        r1("proc_jbsj")=t.Compute("sum(proc_jbsj)",f1)
        r1("proc_gshj")=t.Compute("sum(proc_gshj)",f1)
    End If
Next
我使用以上代码,但输出结果全是0,还请专家指教哪里写的不对?


图片点击可在新窗口打开查看此主题相关图片如下:出勤.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2019/5/29 10:49:34编辑过]

--  作者:有点甜
--  发布时间:2019/5/29 10:56:00
--  

改成

 

f1="proc_zw = \'"& r1("姓名列") &"\'" 


--  作者:lanbor
--  发布时间:2019/5/29 11:33:00
--  谢谢你,有点甜!
哦,原来是这样处理!
--  作者:lanbor
--  发布时间:2019/5/29 11:56:00
--  分类汇总再三请教!
Dim t As Table = Tables("proc97")
Dim v1,v2,v3,v4,f1,f2 As String
Dim r1 As Row
Dim g As Subtotalgroup
Dim g1 As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False  \'分组行不在数据之前
t.TreeVisible = False  \'显示目录树
t.SpillNode = False  \'

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "proc_zw"       \'按职务分类
g.Caption = "{0}" \'"总计"
t.SubtotalGroups.Add(g)

g1 = New Subtotalgroup
g1.Aggregate = AggregateEnum.Sum
g1.GroupOn = "proc_bm"    \'按部门分类
g1.Caption = "{0}" 
t.SubtotalGroups.Add(g1)
t.Subtotal()
For i1 As Integer =0 To t.Rows.Count(True) - 1
    r1=t.Rows(i1,True)
    If r1.IsGroup Then
        f1="proc_zw = \'"& r1("proc_xm") &"\'"
        r1("proc_bh")=t.Compute("count(proc_bh)",f1)
        r1("proc_zbsj")=t.Compute("sum(proc_zbsj)",f1)
        r1("proc_jbsj")=t.Compute("sum(proc_jbsj)",f1)
        r1("proc_gshj")=t.Compute("sum(proc_gshj)",f1)
    End If
Next
我用以上代码,只能实现一个组的分类计数合计
我测试性操作几次,只能得到一种分类汇总结果。

不知道如何对多个分组进行类似操作,还请专家再指教! 
非常感谢!


--  作者:lanbor
--  发布时间:2019/5/29 13:03:00
--  谢谢专家,我已经找到答案了。
For i1 As Integer =0 To t.Rows.Count(True) - 1
    r1=t.Rows(i1,True)
    If r1.IsGroup Then
\'messagebox.show(r1.level)
        Select Case r1.Level    ’我就是在找这个属性
            Case 1
                f1="proc_zw = \'"& r1("proc_xm") &"\'"
                r1("proc_bh")=t.Compute("count(proc_bh)",f1)
                r1("proc_zbsj")=t.Compute("sum(proc_zbsj)",f1)
                r1("proc_jbsj")=t.Compute("sum(proc_jbsj)",f1)
                r1("proc_gshj")=t.Compute("sum(proc_gshj)",f1)
            Case 0
                f1="proc_bm = \'"& r1("proc_xm") &"\'"
                r1("proc_bh")=t.Compute("count(proc_bh)",f1)
                r1("proc_zbsj")=t.Compute("sum(proc_zbsj)",f1)
                r1("proc_jbsj")=t.Compute("sum(proc_jbsj)",f1)
                r1("proc_gshj")=t.Compute("sum(proc_gshj)",f1)
        End Select
    End If
Next

--  作者:有点甜
--  发布时间:2019/5/29 13:22:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=124584&skin=0