Foxtable(狐表)用户栏目专家坐堂 → 汇总后想要实现的效果


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

主题:汇总后想要实现的效果

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
汇总后想要实现的效果  发帖心情 Post By:2020/12/1 9:37:00 [显示全部帖子]

统计后想实现的效果,如上传EXCEL中的两个表
请指导,多谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计效果实现.xls


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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
汇总后想要实现的效果  发帖心情 Post By:2020/12/1 16:00:00 [显示全部帖子]

不行啊,蓝版,各种组合,最终没出来要的结果,整一下午没整明白。
只能求贴代码了

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/12/1 16:28:00 [显示全部帖子]

实现EXCEL中的效果
多谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/12/1 17:26:00 [显示全部帖子]

Dim StartDate As Date
Dim EndDate As Date
With RibbonTabs("功能区1").Groups("功能组1")
    StartDate = .Items("StartDate").Value
    EndDate = .Items("EndDate").Value
    If .Items("StartDate").Value IsNot Nothing And .Items("EndDate").Value IsNot Nothing Then
        Dim g As New GroupTableBuilder("月末汇总", DataTables("运单管理"))
        g.Groups.AddDef("部门")
        g.Groups.AddDef("上游客户")
        g.Groups.AddDef("车辆类型")
        g.Totals.AddDef("上游金额")
        g.Totals.AddDef("已付成本")
        g.Totals.AddDef("计提成本")
        g.Totals.AddDef("总成本")
        g.Totals.AddDef("毛利润")
        g.VerticalTotal = True
        g.Decimals = 2
        g.SubTotal = True
        g.FromServer = True
        g.Filter = "[调度日期] >= #" & StartDate & "# And [调度日期] <= #" & EndDate & "#"
        g.Build()
        MainTable = Tables("月末汇总")
        With Tables("月末汇总")
            .MergeMode = MergeModeEnum.Standard '标准合并模式
            .MergeCols.Clear() '清除原来的合并列
            .MergeCols.Add("部门") '加入要合并的列
            .MergeSort = "部门" '设置合并模式下的排序方式
            .AllowMerge = True '启用合并模式
        End With
        Dim t1 As Table = Tables("月末汇总")
        Dim g1 As Subtotalgroup
        t1.SubtotalGroups.Clear()
        t1.GroupAboveData = False
        t1.TreeVisible = False
        t1.SpillNode = True
        
        g1 = New Subtotalgroup
        g1.Aggregate = AggregateEnum.Sum
        g1.GroupOn = "上游客户"
        g1.TotalOn = "上游金额,已付成本,计提成本,总成本,毛利润"
        g1.Caption = "{0} 小计"
        t1.SubtotalGroups.Add(g1)
        
        Dim Products As List(Of String) = DataTables("月末汇总").GetValues("车辆类型",g.Filter)
        For Each s As String In Products
            g1 = New Subtotalgroup
            g1.Aggregate = AggregateEnum.Sum
            g1.GroupOn = "部门"
            g1.Caption = "{0} " & s & " 小计_"
            t1.SubtotalGroups.Add(g1)
        Next
        g1 = New Subtotalgroup
        g1.Aggregate = AggregateEnum.Sum
        g1.GroupOn = "部门"
        g1.TotalOn = "上游金额,已付成本,计提成本,总成本,毛利润"
        g1.Caption = "{0} 合计"
        t1.SubtotalGroups.Add(g1)
        
        g1 = New Subtotalgroup
        g1.Aggregate = AggregateEnum.Sum
        g1.GroupOn = "*"
        g1.TotalOn = "上游金额,已付成本,计提成本,总成本,毛利润"
        g1.Caption = "总计"
        t1.SubtotalGroups.Add(g1)
        t1.Subtotal()
        
        Dim r As Row
        Dim arr() As String
        With Tables("月末汇总")
            For i As Integer = .Rows.Count(True) - 1 To 0 Step -1 'Count加上参数True
                r = .Rows(i,True) 'Rows也需要加上参数True
                If r.IsGroup AndAlso r("部门") Like "*小计_" Then '如果是分组行
                    arr = r("部门").split(" ")
                    r("部门") = Nothing
                    r("车辆类型") = arr(1) & "小计"
                    r("已付成本") = .Compute("sum(已付成本)","部门='" & arr(0) & "' And 车辆类型='" & arr(1) & "'")
                    r("计提成本") = .Compute("sum(计提成本)","部门='" & arr(0) & "' And 车辆类型='" & arr(1) & "'")
                End If
            Next
        End With
    Else
        MessageBox.Show("请填写调度起始期后再进行统计!")
    End If
End With

用以上代码,在菜单的功能区中测试,添加了调度日期
图片点击可在新窗口打开查看此主题相关图片如下:11111.png
图片点击可在新窗口打开查看
时间段的条件后,为什么出现了错误提示呢?

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
汇总后想要实现的效果  发帖心情 Post By:2020/12/2 9:56:00 [显示全部帖子]

Dim Products As List(Of String) = DataTables("月末汇总").GetValues("车辆类型",g.Filter)

蓝版,调度日期的列名是没错的
我逐句做了调试,应该是上面这句代码出的问题,g.Filter,应该是这个条件,但我不知道怎么改,您再帮看一下

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
汇总  发帖心情 Post By:2020/12/2 22:00:00 [显示全部帖子]

实在麻烦了
图片点击可在新窗口打开查看此主题相关图片如下:汇总.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
汇总  发帖心情 Post By:2020/12/3 21:46:00 [显示全部帖子]

还是没弄出来,求代码
感谢

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/12/4 12:41:00 [显示全部帖子]

Dim g As New GroupTableBuilder("月末汇总", DataTables("运单管理"))
g.Groups.AddDef("部门")
g.Groups.AddDef("上游客户")
g.Groups.AddDef("车辆类型")
g.Totals.AddDef("上游金额")
g.Totals.AddDef("已付成本")
g.Totals.AddDef("计提成本")
g.Totals.AddDef("总成本")
g.Totals.AddDef("毛利润")
g.VerticalTotal = True
g.Decimals = 2
g.SubTotal = True
g.FromServer = True

g.Build()
MainTable = Tables("月末汇总")
With Tables("月末汇总")
    .MergeMode = MergeModeEnum.Standard '标准合并模式
    .MergeCols.Clear() '清除原来的合并列
    .MergeCols.Add("部门") '加入要合并的列
    .MergeSort = "部门" '设置合并模式下的排序方式
    .AllowMerge = True '启用合并模式
End With
Dim t1 As Table = Tables("月末汇总")
Dim g1 As Subtotalgroup
t1.SubtotalGroups.Clear()
t1.GroupAboveData = False
t1.TreeVisible = False
t1.SpillNode = True

g1 = New Subtotalgroup
g1.Aggregate = AggregateEnum.Sum
g1.GroupOn = "上游客户"
g1.TotalOn = "上游金额,已付成本,计提成本,总成本,毛利润"
g1.Caption = "{0} 小计"
t1.SubtotalGroups.Add(g1)

Dim Products As List(Of String) = DataTables("月末汇总").GetValues("车辆类型")
For Each s As String In Products
    g1 = New Subtotalgroup
    g1.Aggregate = AggregateEnum.Sum
    g1.GroupOn = "部门"
    g1.Caption = "{0} " & s & " 小计_"
    t1.SubtotalGroups.Add(g1)
Next
g1 = New Subtotalgroup
g1.Aggregate = AggregateEnum.Sum
g1.GroupOn = "部门"
g1.TotalOn = "上游金额,已付成本,计提成本,总成本,毛利润"
g1.Caption = "{0} 合计"
t1.SubtotalGroups.Add(g1)

Dim Ps As List(Of String) = DataTables("月末汇总").GetValues("车辆类型")
For Each m As String In Ps
    g1 = New Subtotalgroup
    g1.Aggregate = AggregateEnum.Sum
    g1.GroupOn = "*"
    g1.Caption = "{0} " & m & " 合计_"
    t1.SubtotalGroups.Add(g1)
Next


g1 = New Subtotalgroup
g1.Aggregate = AggregateEnum.Sum
g1.GroupOn = "*"
g1.TotalOn = "上游金额,已付成本,计提成本,总成本,毛利润"
g1.Caption = "总计"
t1.SubtotalGroups.Add(g1)
t1.Subtotal()

Dim r As Row
Dim arr() As String
With Tables("月末汇总")
    For i As Integer = .Rows.Count(True) - 1 To 0 Step -1 'Count加上参数True
        r = .Rows(i,True) 'Rows也需要加上参数True
        If r.IsGroup AndAlso r("部门") Like "*小计_" Then '如果是分组行
            arr = r("部门").split(" ")
            r("部门") = Nothing
            r("车辆类型") = arr(1) & "小计"
            r("已付成本") = .Compute("sum(已付成本)","部门='" & arr(0) & "' And 车辆类型='" & arr(1) & "'")
            r("计提成本") = .Compute("sum(计提成本)","部门='" & arr(0) & "' And 车辆类型='" & arr(1) & "'")
        End If
    Next
End With

Dim rr As Row
Dim ar() As String
With Tables("月末汇总")
    For ii As Integer = .Rows.Count(True) - 1 To 0 Step -1 'Count加上参数True
        rr = .Rows(ii,True) 'Rows也需要加上参数True
        If rr.IsGroup AndAlso rr("部门") Like "*合计_" Then '如果是分组行
            ar = rr("部门").split(" ")
            rr("部门") = Nothing
            rr("车辆类型") = ar(1) & "小计"
            rr("已付成本") = .Compute("sum(已付成本)","部门='" & ar(0) & "' And 车辆类型='" & ar(1) & "'")
            rr("计提成本") = .Compute("sum(计提成本)","部门='" & ar(0) & "' And 车辆类型='" & ar(1) & "'")
        End If
    Next
End With

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/12/4 12:45:00 [显示全部帖子]

执行以上代码后,变成这样了
图片点击可在新窗口打开查看此主题相关图片如下:8888.png
图片点击可在新窗口打开查看

 回到顶部