以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求每个品种的总共设定值,总共实际值,总共误差值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146350)

--  作者:wujie
--  发布时间:2020/2/21 20:51:00
--  求每个品种的总共设定值,总共实际值,总共误差值
在窗口表中如何做一个按钮计算出在时间范围内每个品种的总共设定值,实际值,误差值
--  作者:有点蓝
--  发布时间:2020/2/21 22:07:00
--  
使用分组统计:http://www.foxtable.com/webhelp/topics/0677.htm
--  作者:wujie
--  发布时间:2020/2/22 9:56:00
--  加上时间范围怎么写啊
有一个时间范围算出每个品种的总共值


--  作者:有点蓝
--  发布时间:2020/2/22 10:05:00
--  
生成时间范围条件的用法http://www.foxtable.com/webhelp/topics/2720.htm

分组统计可以使用条件统计

GroupTableBuilder包括以下属性:

Caption:           字符型,指定新生成统计表的标题。
Groups:            集合,用于添加分组列
Totals:            集合,用于添加统计列。
VerticalTotal:     逻辑型,设为True,垂直方向自动增加汇总行。参考:垂直汇总
GrandProportion:   逻辑型,是否生成总占比。 参考:分组统计之占比分析
GroupProportion:   逻辑型,是否生成分组占比。参考:分组统计之占比分析 
SamePeriodGrowth:  逻辑型,是否生成同比增长率。参考: 分组统计之增长率分析
CircleGrowth:      逻辑型,是否生成环比增长率。参考: 分组统计之增长率分析
Subtotal:          逻辑型,设为True,将对分组统计结果进行二次统计,生成汇总模式。 参考:自动生成汇总模式
SubtotalLevel:     整数型,根据多少个分组生成汇总模式。 参考:自动生成汇总模式
Decimals:          整数型,用于设置统计结果要保留的小数位数,默认为4位。
Filter:            字符型,如果只是对SourceDataTable中的部分数据进行统计,可用Filter属性设置条件。
请参考表达式的运算符和函数 和 条件表达式


--  作者:wujie
--  发布时间:2020/2/22 10:17:00
--  这样可以吗
Dim Filter As String
With e.Form.Controls("A")
    If .Value IsNot Nothing Then
        Filter = "配方名称 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("B")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("C")
    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.Totals.AddDef("设定值") \'对数量进行统计 
b.Totals.AddDef("实际值") 
b.Totals.AddDef("误差值") 

b.Build \'生成统计表 
MainTable = Tables("统计表1")

If Filter > "" Then
    Tables("生产记录").Filter = Filter
End If

--  作者:有点蓝
--  发布时间:2020/2/22 10:33:00
--  
……
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
Dim b As New GroupTableBuilder("统计表1",DataTables("生产记录"))
b.Groups.AddDef("原料名称") \'根据产品分组
b.Totals.AddDef("设定值") \'对数量进行统计 
b.Totals.AddDef("实际值") 
b.Totals.AddDef("误差值") 
b.Filter = Filter
b.Build \'生成统计表 
MainTable = Tables("统计表1")

--  作者:wujie
--  发布时间:2020/2/22 11:16:00
--  这样写不对啊,查出来的东西是乱的
Dim Filter As String
With e.Form.Controls("J")
    If .Value IsNot Nothing Then
        Filter = "配方名称 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("H")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("I")
    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.Totals.AddDef("设定值") \'对数量进行统计 
b.Totals.AddDef("实际值") 
b.Totals.AddDef("误差值") 
b.Filter = Filter
b.Build \'生成统计表 
MainTable = Tables("统计表1")

--  作者:有点蓝
--  发布时间:2020/2/22 11:32:00
--  
什么东西乱?要实现什么效果?上传实例说明