Foxtable(狐表)用户栏目专家坐堂 → [求助]自定义汇总模式的设置


  共有2842人关注过本帖树形打印复制链接

主题:[求助]自定义汇总模式的设置

帅哥哟,离线,有人找我吗?
whataball
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:183 威望:0 精华:0 注册:2016/11/11 15:47:00
[求助]自定义汇总模式的设置  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110608 积分:562942 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/6 8:48:00 [只看该作者]

看不到数据,上例子说明

 回到顶部
帅哥哟,离线,有人找我吗?
whataball
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:183 威望:0 精华:0 注册:2016/11/11 15:47:00
补充文件上传  发帖心情 Post By:2016/12/6 10:01:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生产效率.table

文件在这里,谢谢。另外,汇总模式下如何使用排序功能?
[此贴子已经被作者于2016/12/6 10:29:48编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110608 积分:562942 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:183 威望:0 精华:0 注册:2016/11/11 15:47:00
  发帖心情 Post By: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
不过不清楚怎样保存自定义设置,只能每次重开文件都要重新输命令。

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110608 积分:562942 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/6 11:15:00 [只看该作者]

创建窗口,做个按钮

 回到顶部
帅哥哟,离线,有人找我吗?
whataball
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:183 威望:0 精华:0 注册:2016/11/11 15:47:00
  发帖心情 Post By:2016/12/6 11:31:00 [只看该作者]

原来如此,已经创建好了,谢谢。
现在还剩几个小问题没解决:
1、当2人共同上一个班时的效率想各自算在每个人自己身上,但不是各取一半计算而是都取100%来计算。
2、当“产品”列列宽较小时,只有第一行的汇总信息能完整显示出来,其他汇总行都只能显示一部分。或者说本来想将汇总信息左端对齐到“班次日期”列的,但由于刚才的代码班长名字不能显示出来,所以才调整成现在的样子。
3、由于已经自定义了汇总信息,那“总线效率”列的统计要如何隐藏掉呢?
[此贴子已经被作者于2016/12/6 11:37:01编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110608 积分:562942 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/6 11:37:00 [只看该作者]

1、这种多值字段的这种汇总模式处理不了你这种情况


 回到顶部
帅哥哟,离线,有人找我吗?
whataball
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:12 积分:183 威望:0 精华:0 注册:2016/11/11 15:47:00
  发帖心情 Post By:2016/12/6 12:05:00 [只看该作者]

可能是我没表述清楚。
1、这个问题解决不了也没有什么影响,感谢回复。
2、按照 r("当班班长") = "班长:" & r("当班班长") & v这一段代码,显示出来的是
(班长: 当班次数xx 总体效率:xx)而并非预想中的(班长:xx 当班次数xx 总体效率:xx)
3、参考教程文件中的例子
图片点击可在新窗口打开查看此主题相关图片如下:无标题.jpg
图片点击可在新窗口打开查看
自定义汇总模式后,自动汇总了金额,而汇总行中的“金额”列不再显示数据,但现在自定义后,“总线效率”列还有显示。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/6 12:51:00 [只看该作者]

 你想要设置哪个列的值,都可以的啊

 

r("总线效率") = Nothing


 回到顶部
总数 13 1 2 下一页