以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]自定义汇总模式的设置 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93737) |
||||
-- 作者:whataball -- 发布时间:2016/12/5 23:09:00 -- [求助]自定义汇总模式的设置 新手求助: 此主题相关图片如下:无标题.jpg 如附件图片,这是汇总模式下的目录树样式,分别根据班次以及当班班长进行汇总统计,代码如下: Dim t As Table = Tables("产量统计") Dim g As SubtotalGroup t.SubtotalGroups.Clear() t.GroupAboveData = True t.TreeVisible = True t.SpillNode = True g = New SubtotalGroup g.Aggregate = AggregateEnum.Average g.GroupOn = "班次" g.TotalOn = "总线效率" g.Caption = "{0} 效率" t.SubtotalGroups.Add(g) g = New SubtotalGroup g.Aggregate = AggregateEnum.Average g.GroupOn = "当班班长" g.TotalOn = "总线效率" g.Caption = "{0} 效率" 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) v = v & " 总体效率:" & t.Compute("Average(总线效率)",f) r("当班班长") = "班长:" & r("当班班长") & v End If Next 想达到的效果是在汇总行显示出每个班长 早、中、夜班分别上了多少次,上各个班次时的平均效率。如图所示标题倒是能显示了,但班长名字、班次次数以及效率均不能显示出来,请问代码需要怎样修改? 另外由于有时候一个班会有两个班长当班,所以当班班长列设为了多值字段,统计时两人当班的能否分别算入各自的汇总效率中?(网上看了不少代码都是两人各按50%算,而我则是想两人都各是按100%算入自己的汇总中) [此贴子已经被作者于2016/12/5 23:09:29编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2016/12/6 8:48:00 -- 看不到数据,上例子说明 |
||||
-- 作者:whataball -- 发布时间:2016/12/6 10:01:00 -- 补充文件上传
文件在这里,谢谢。另外,汇总模式下如何使用排序功能?
[此贴子已经被作者于2016/12/6 10:29:48编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2016/12/6 10:35:00 -- Dim bz As String Dim r As Row For i As Integer = 0 To t.Rows.Count(True) - 1 r = t.Rows(i,True) If r.IsGroup Dim n As String = r(0).split(" ")(0) Dim f As String If n = "早班" OrElse n = "中班" OrElse n = "夜班" Then f = "当班班长 = \'" & bz & "\' and 班次=\'" & n & "\'" Else bz = n f = "当班班长 = \'" & bz & "\'" End If Output.Show(f) Dim v As String = " 当班次数:" & t.Compute("Count(班次)",f) v = v & " 总体效率:" & Format(t.Compute("Avg(总线效率)",f),"0.00") r("当班班长") = "班长:" & r("当班班长") & v End If Next
|
||||
-- 作者:whataball -- 发布时间:2016/12/6 11:10:00 -- 稍微调整了下代码,现在成这样了: Dim bz As String Dim r As Row For i As Integer = 0 To t.Rows.Count(True) - 1 r = t.Rows(i,True) If r.IsGroup Dim n As String = r(0).split(" ")(0) Dim f As String If n = "早班" OrElse n = "中班" OrElse n = "夜班" Then f = "当班班长 = \'" & bz & "\' and 班次=\'" & n & "\'" Else bz = n f = "当班班长 = \'" & bz & "\'" End If Output.Show(f) Dim v As String = " 当班次数:" & t.Compute("Count(班次)",f) v = v & " 总体效率:" & Format(t.Compute("Avg(总线效率)",f),"0.00") r("产品") = r("当班班长") & v End If Next 不过不清楚怎样保存自定义设置,只能每次重开文件都要重新输命令。
|
||||
-- 作者:有点蓝 -- 发布时间:2016/12/6 11:15:00 -- 创建窗口,做个按钮 |
||||
-- 作者:whataball -- 发布时间:2016/12/6 11:31:00 -- 原来如此,已经创建好了,谢谢。 现在还剩几个小问题没解决: 1、当2人共同上一个班时的效率想各自算在每个人自己身上,但不是各取一半计算而是都取100%来计算。 2、当“产品”列列宽较小时,只有第一行的汇总信息能完整显示出来,其他汇总行都只能显示一部分。或者说本来想将汇总信息左端对齐到“班次日期”列的,但由于刚才的代码班长名字不能显示出来,所以才调整成现在的样子。 3、由于已经自定义了汇总信息,那“总线效率”列的统计要如何隐藏掉呢?
[此贴子已经被作者于2016/12/6 11:37:01编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2016/12/6 11:37:00 -- 1、这种多值字段的这种汇总模式处理不了你这种情况 |
||||
-- 作者:whataball -- 发布时间:2016/12/6 12:05:00 -- 可能是我没表述清楚。 1、这个问题解决不了也没有什么影响,感谢回复。 2、按照 r("当班班长") = "班长:" & r("当班班长") & v这一段代码,显示出来的是 (班长: 当班次数xx 总体效率:xx)而并非预想中的(班长:xx 当班次数xx 总体效率:xx) 自定义汇总模式后,自动汇总了金额,而汇总行中的“金额”列不再显示数据,但现在自定义后,“总线效率”列还有显示。
|
||||
-- 作者:有点色 -- 发布时间:2016/12/6 12:51:00 -- 你想要设置哪个列的值,都可以的啊
r("总线效率") = Nothing |