以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186464)

--  作者:lin98
--  发布时间:2023/5/5 14:57:00
--  统计问题
Dim Filter As String
With e.Form.Controls("StartDate") 
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "送货日期 >= #" & .Value & "#" 
    End If
End With
With e.Form.Controls("EndDate") 
    If .Value IsNot Nothing Then
        If Filter >"" Then
           Filter = Filter & " And "
        End If
        Filter = Filter & "送货日期 <= #" & .Value & "#" 
    End If
End With
With e.Form.Controls("C1") 
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
       Filter = Filter & "客户 = \'" & .Value & "\'" 
    End If
End With
With e.Form.Controls("C2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
       Filter = Filter & "品名 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("C3")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
       Filter = Filter & "规格 = \'" & .Value & "\'"
    End If
End With
Dim b As New GroupTableBuilder("统计表1", DataTables("订单明细")) \'
b.Groups.AddDef("客户") \'
b.Groups.AddDef("品名")
b.Groups.AddDef("规格")
b.Totals.AddDef("数量","订购数量") \'
b.Totals.AddDef("金额","订购金额") \'
b.Filter = Filter 
Tables("订单统计窗口_Table1").DataSource = b.BuildDataSource()

以上代码,是客户、品名、规格、时间的分组进行统计,如果分成多个分组统计如下面几种,就是分多的按键来实现。

如何实现一个按键多种分组统计?

1.分组一,以客户和品名进行统计,以复重的客户名称合并后进行显示

Dim b As New GroupTableBuilder("统计表1", DataTables("订单明细")) \'
b.Groups.AddDef("客户") \'
b.Groups.AddDef("品名")
b.Totals.AddDef("数量","订购数量") \'
b.Totals.AddDef("金额","订购金额") \'
b.Filter = Filter 
Tables("订单统计窗口_Table1").DataSource = b.BuildDataSource()

2.分组二,以客户和规格进行统计,以复重的客户名称合并后进行显示
Dim b As New GroupTableBuilder("统计表1", DataTables("订单明细")) \'
b.Groups.AddDef("客户") \'
b.Groups.AddDef("规格")
b.Totals.AddDef("数量","订购数量") \'
b.Totals.AddDef("金额","订购金额") \'
b.Filter = Filter 
Tables("订单统计窗口_Table1").DataSource = b.BuildDataSource()


3.分组三,以客户、品名、规格进行统计,以复重的客户名称和品名合并后进行显示
Dim b As New GroupTableBuilder("统计表1", DataTables("订单明细")) \'
b.Groups.AddDef("客户") \'
b.Groups.AddDef("品名")
b.Groups.AddDef("规格")
b.Totals.AddDef("数量","订购数量") \'
b.Totals.AddDef("金额","订购金额") \'
b.Filter = Filter 
Tables("订单统计窗口_Table1").DataSource = b.BuildDataSource()

4.分组4,规格进行统计
Dim b As New GroupTableBuilder("统计表1", DataTables("订单明细")) \'
b.Groups.AddDef("规格")
b.Totals.AddDef("数量","订购数量") \'
b.Totals.AddDef("金额","订购金额") \'
b.Filter = Filter 
Tables("订单统计窗口_Table1").DataSource = b.BuildDataSource()
[此贴子已经被作者于2023/5/5 14:58:55编辑过]

--  作者:有点蓝
--  发布时间:2023/5/5 15:01:00
--  
如果是指把这几个统计结果直接合并到一起,没有办法
--  作者:lin98
--  发布时间:2023/5/5 15:15:00
--  
不是几种结果直接合并在一起,是按几种条件,多种条件有一种满足,按满足条件进行计算

比如
分组1.就是如果送货日期、客户、品名不为空,规格为空,按送货日期、客户、品名分组进行统计,如果重复客户、品名以合并显示。分组2、3、4类似

如何实现?

--  作者:有点蓝
--  发布时间:2023/5/5 15:25:00
--  
这个和条件没有关系,和分组有关,同样的分组才能合并到一起
--  作者:lin98
--  发布时间:2023/5/5 16:45:00
--  
1楼是有4种分组,一般要分4按键来区分,这分组不灵活,如果20种分组,要做20个按键,想如何实现在一个按键可以多种分组,比有20种分组,执行时,按用户的内容分组统计,出就满足组合统计

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


--  作者:lin98
--  发布时间:2023/5/5 16:53:00
--  
如上图统计是比较不灵活,按键也太多,如何实现按键窗口上的组合框录入的内容进行分组统计?

比如下情况
1.当用户录入,日期、客户的内容,就按此进行分组统计,显示;
2.当用户录入,日期、客户、产品的内容,就按此进行分组统计,显示
3.用户录入,日期、客户、规格的内容,就按此进行分组统计,显示
4.用户录入,日期、规格的内容,就按此进行分组统计,显示
5.用户录入,日期、客户、产品、规格的内容,就按此进行分组统计,显示;、、、、、、

--  作者:有点蓝
--  发布时间:2023/5/5 16:55:00
--  
把分组做成可选的,根据选择的分组,动态设置,比如:http://www.foxtable.com/webhelp/topics/0940.htm

Dim b As New GroupTableBuilder("统计表1", DataTables("订单明细")) \'
for each s as string in e.Form.Controls("CheckedComboBox1").text.split(",") 
b.Groups.AddDef(s)
endif

--  作者:lin98
--  发布时间:2023/5/6 11:09:00
--  
无法实现


[此贴子已经被作者于2023/5/6 12:05:46编辑过]

--  作者:有点蓝
--  发布时间:2023/5/6 11:24:00
--  
错误和分组没有关系,没有金额这个列