以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  组合多个统计,Subtotal,第二个统计表无效  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=117387)

--  作者:fubblyc
--  发布时间:2018/4/11 17:26:00
--  组合多个统计,Subtotal,第二个统计表无效
Subtotal对交叉统计结果进行二次统计,生成汇总模式。
组合多个统计中第二个统计表无效。。

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180411171903.png
图片点击可在新窗口打开查看
代码:

    Dim b As New SQLCrossTableBuilder("统计表1","consume_report")
    b.C
    Dim dt1 As fxDataSource
    If Forms("窗口1").Controls("DropBox3").value = "整体" Then

    ElseIf Forms("窗口1").Controls("DropBox3").value = "门店" Then
        b.HGroups.AddDef("mall_name","门店名称") \'添加客户列用于水平分组
        s001= "门店名称"
    End If
    If Forms("窗口1").Controls("DropBox4").value = "年报" Then
        b.hGroups.AddDef("image_time",DateGroupEnum.Year,"年度") \'添加日期列用于垂直分组,按年分组
        s002 = "年度"
    End If
    b.VGroups.Addexp("is_turnover", "case when (is_turnover = 1 or is_turnover = 0) then \'总客流\' end ") \'
    
    If Forms("窗口1").Controls("CheckBox1").Checked = True Then
        b.VGroups.Addexp("sex","case when sex = \'男\' then \'男\' when sex = \'女\' then \'女\' end ") \'
    End If
    If Forms("窗口1").Controls("CheckBox2").Checked = True Then
        b.VGroups.AddExp("age"," Case when age <= 25 Then \'25岁以下\' when age >= 26 and age <= 30 then \'26-30岁\' when age >= 31 and age <= 35 then \'31-35岁\' when age >= 36 and age <= 45 then \'36-45岁\' else  \'46岁以上\' end ")
    End If
    b.Totals.AddDef("imgage_id",AggregateEnum.count,"人数") \'添加数量列用于统计
    \'b.VerticalTotal = True
    b.Filter = filter
    b.Subtotal = True \'生成汇总模式
    b.SubtotalLevel = 0 \'只生成总计行
    dt1 = b.BuildDataSource()
        
    Dim b2 As New SQLCrossTableBuilder("统计表2","consume_report")
    b2.C
    Dim dt2 As fxDataSource
    If Forms("窗口1").Controls("DropBox3").value = "整体" Then
    ElseIf Forms("窗口1").Controls("DropBox3").value = "门店" Then
        b2.HGroups.AddDef("mall_name","门店名称") \'添加客户列用于水平分组
    End If
    If Forms("窗口1").Controls("DropBox4").value = "年报" Then
        b2.hGroups.AddDef("image_time",DateGroupEnum.Year,"年度") \'添加日期列用于垂直分组,按年分组
    End If
    b2.VGroups.Addexp("is_turnover", "case when is_turnover = 1 then \'成交数\' end ") \'
    
    If Forms("窗口1").Controls("CheckBox1").Checked = True Then
        b2.VGroups.Addexp("sex","case when sex = \'男\' then \'男\' when sex = \'女\' then \'女\' end ") \'添加产品列用于垂直分组,并设置了Pattern参数
    End If
    If Forms("窗口1").Controls("CheckBox2").Checked = True Then
        b2.VGroups.AddExp("age"," Case when age <= 25 Then \'25岁以下\' when age >= 26 and age <= 30 then \'26-30岁\' when age >= 31 and age <= 35 then \'31-35岁\' when age >= 36 and age <= 45 then \'36-45岁\' else  \'46岁以上\' end ")
    End If
    b2.Totals.AddDef("imgage_id",AggregateEnum.count,"人数") \'添加数量列用于统计
    \'b2.VerticalTotal = True
    b2.Filter = filter & " and is_turnover = 1"
    b2.Subtotal = True \'生成汇总模式
    b2.SubtotalLevel = 0 \'只生成总计行
    dt2 = b2.BuildDataSource()
    
    Dim nms() As String
    s003 = s001 & "," & s002
    output.show(s003)
    nms = s003.split(",")
    dt1.Combine(nms,dt2,nms) \'将销售统计数据组合到进货统计数据    
    Forms("窗口1").Controls("table1").Table.DataSource = dt1

--  作者:有点甜
--  发布时间:2018/4/11 17:34:00
--  

得到组合表格以后,再设置一次汇总模式

 

http://www.foxtable.com/webhelp/scr/1372.htm