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


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

主题:关于自定义汇总

帅哥,在线噢!
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()

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


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

这两个看明白了,谢谢

 回到顶部
帅哥,在线噢!
lgj716330
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

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


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

哦,明白了

 回到顶部
帅哥,在线噢!
lgj716330
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
lgj716330
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥,在线噢!
lgj716330
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/12 14:30:00 [显示全部帖子]

谢谢,这个问题自己找出原因了,    If c.Visible AndAlso c.IsNumeric Then
把这里的c.Visible AndAlso 去掉就可以了

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/17 16:51:00 [显示全部帖子]

Dim b As New SQLCrossTableBuilder("费用明细表","部门损益总账")  
b.AddTable("部门损益总账","部门名称","部门档案","部门名称") 
b.AddTable("部门损益总账","科目编号","科目档案","科目编码") 
b.HGroups.AddExp("日期","所属日期") 
b.HGroups.AddDef("所属单位") 
b.HGroups.AddDef("部门类型")
b.HGroups.AddDef("上级部门","部门") 
b.HGroups.AddDef("{部门损益总账}.科目名称")
b.VGroups.AddDef("成本类别") 
b.Totals.AddDef("借方发生","本月") 
b.Totals.AddDef("借方发生","累计",True)
b.Decimals = 0 
b.HorizontalTotal = True 
b.Subtotal = True 
b.SubtotalLevel = 1 


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

为什么我的水平汇总的”本月”和”累计”是一样的呢


 回到顶部
帅哥,在线噢!
lgj716330
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

以下是引用Hyphen在2015/12/17 16:54:00的发言:
b.Totals.AddDef("{费用明细表}.借方发生","本月") 指定所有者

好像还是不行


 回到顶部
帅哥,在线噢!
lgj716330
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/17 17:55:00 [显示全部帖子]

算了,我还是换种方式统计好了,这里有两个问题

1、在设置列宽的时候好像这句代码没起作用,列标题不会根据设置自动换行的吗
With Tables("费用明细表") '设置各列的宽度
    .AutoSizeCols(15) '统一设置统计列的宽度
    .Cols("日期").PrintWidth = 20
    .Cols("所属单位").PrintWidth = 20
    .Cols("部门").PrintWidth = 35
End With

2、第一层标题能不能小计及如何小计,如2人力薪酬成本

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




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