Foxtable(狐表)用户栏目专家坐堂 → 关于自定义汇总


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

主题:关于自定义汇总

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
关于自定义汇总  发帖心情 Post By:2015/12/10 17:00:00 [只看该作者]

如图,我要在筛选过程中进行自定义汇总,如何使得“年份”不用汇总,同时只有选择科目的时候才进行总计,科目不选就没有总计
图片点击可在新窗口打开查看此主题相关图片如下:3333.jpg
图片点击可在新窗口打开查看


Dim Filter As String '设置筛选条件
With e.Form.Controls("DW")
    If .Value IsNot Nothing Then
        Filter = "所属单位 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("NF") 
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "年 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("KM")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "一级科目 = '" & .Value & "'"
    End If
End With
If Filter > "" Then
    Tables("损益进度(总体)").Filter = Filter
End If
Dim t As Table = Tables("损益进度(总体)") 
Dim g As Subtotalgroup 
Dim cs As String = ""
For Each c As Col In Tables("损益进度(总体)").cols
    If c.Visible AndAlso c.IsNumeric Then
        cs &= c.name & ","
    End If
Next
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = False


g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = cs.trim(",")
g.Caption = "总计"
t.SubtotalGroups.Add(g)

t.Subtotal()

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/10 17:02:00 [只看该作者]

For Each c As Col In Tables("损益进度(总体)").cols
    If c.Visible AndAlso c.IsNumeric AndAlso c.Name <> "年份" Then
        cs &= c.name & ","
    End If
Next

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/10 17:03:00 [只看该作者]

If e.Form.Controls("KM").Text > "" Then

    '汇总代码

 

End If


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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/10 17:06:00 [只看该作者]

这两个看明白了,谢谢

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/11 11:42:00 [只看该作者]

在自定义汇总中,计算汇总行的比率时,有这个错误提示
Dim r As Row
For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.IsGroup And r(dic("主营业务收入_本月")) = 0 Then
        r("毛利率_本月") = 0
    Else
        r("毛利率_本月") = r("利润_本月")/r(dic("主营业务收入_本月"))
    End If
Next
图片点击可在新窗口打开查看此主题相关图片如下:1122.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/11 11:52:00 [只看该作者]

你的 【毛利率_本月】 是表达式列,不要创建表达式列

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/11 12:00:00 [只看该作者]

哦,明白了

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/11 20:31:00 [只看该作者]

With Tables("损益总体比率") '隐藏部分列
    .Cols(dic("主营业务收入_本月")).Visible = False
    .Cols(dic("主营业务收入_累计")).Visible = False
    .Cols(dic("主营业务成本_本月")).Visible = False
    .Cols(dic("主营业务成本_累计")).Visible = False
    .Cols("营业费用_本月").Visible = False
    .Cols("营业费用_累计").Visible = False
    .Cols(dic("资产减值损失_本月")).Visible = False
    .Cols(dic("资产减值损失_累计")).Visible = False
    .Cols("其他支出_本月").Visible = False
    .Cols("其他支出_累计").Visible = False
    .Cols("利润_本月").Visible = False
    .Cols("利润_累计").Visible = False
End With
Dim t As Table = Tables("损益总体比率") 
Dim g As Subtotalgroup '以下为设置自定义汇总模式,b.Subtotal = True 不适用通过表达式生成的列
Dim cs As String = ""
For Each c As Col In Tables("损益总体比率").cols
    If c.Visible AndAlso c.IsNumeric Then
        cs &= c.name & ","
    End If
Next
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = False

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "部门类型"
g.TotalOn = cs.trim(",")
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = cs.trim(",")
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 And (r(dic("主营业务收入_本月")) = 0 Or r(dic("主营业务收入_本月")) Is Nothing) Then
        r("利润率_本月") = 0
        r("利润率_累计") = 0
        r("毛利率_本月") = 0
        r("毛利率_累计") = 0
        r("费用率_本月") = 0
        r("费用率_累计") = 0
        r("打折率_本月") = 0
        r("打折率_累计") = 0
    Else
        r("利润率_本月") = r("利润_本月")/r(dic("主营业务收入_本月"))
        r("利润率_累计") = r("利润_累计")/r(dic("主营业务收入_累计"))
        r("毛利率_本月") = (r(dic("主营业务收入_本月"))-r(dic("主营业务成本_本月")))/r(dic("主营业务收入_本月"))
        r("毛利率_累计") = (r(dic("主营业务收入_累计"))-r(dic("主营业务成本_累计")))/r(dic("主营业务收入_累计"))
        r("费用率_本月") = r("营业费用_本月")/r(dic("主营业务收入_本月"))
        r("费用率_累计") = r("营业费用_累计")/r(dic("主营业务收入_累计"))
        r("打折率_本月") = r(dic("资产减值损失_本月"))/r(dic("主营业务收入_本月"))
        r("打折率_累计") = r(dic("资产减值损失_累计"))/r(dic("主营业务收入_累计"))   
    End If
Next
 
上面代码有什么问题吗,我隐藏了各相关比率计算公式里的相关列后,汇总里的小计和总计都变成0了,如图
图片点击可在新窗口打开查看此主题相关图片如下:123.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/11 20:49:00 [只看该作者]

代码没问题,上传例子测试。


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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/11 21:20:00 [只看该作者]

好的
[此贴子已经被作者于2015/12/12 14:15:17编辑过]

 回到顶部
总数 27 1 2 3 下一页