以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  组合多个统计结果如何应用相同的筛选条件啊?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=140999)

--  作者:guosheng
--  发布时间:2019/9/19 9:23:00
--  组合多个统计结果如何应用相同的筛选条件啊?

例如:跟bd1加一个filter条件,bd1.filter="产品名称=\'PD01\'"

《销售单》没有存储,“产品名称”这一列,所以怎么将 bd2.filter也设应用bd1.filter的条件啊



Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单"))
Dim
dt1 As fxDataSource
bd1
.Groups.AddDef("型号") \'根据型号分组
bd1
.Totals.AddDef("数量","进货_数量") \'对数量进行统计
bd1
.Totals.AddDef("金额","进货_金额") \'对金额进行统计
dt1
= bd1.BuildDataSource()

Dim
bd2 As New GroupTableBuilder("统计表2",DataTables("销售单"))
Dim
dt2  As fxDataSource
bd2
.Groups.AddDef("型号") \'根据型号分组
bd2
.Totals.AddDef("数量","销售_数量") \'对数量进行统计
bd2
.Totals.AddDef("金额","销售_金额") \'对金额进行统计
dt2
= bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("退货单"))
Dim
dt3 As fxDataSource
bd3
.Groups.AddDef("型号") \'根据型号分组
bd3
.Totals.AddDef("数量","退货_数量") \'对数量进行统计
bd3
.Totals.AddDef("金额","退货_金额") \'对金额进行统计
dt3 = bd3.BuildDataSource()

dt1.Combine("型号",dt2,"型号") \'将销售统计数据组合到进货统计数据
dt1
.Combine("型号",dt3,"型号") \'将退货统计数据组合到进货统计数据


--  作者:有点蓝
--  发布时间:2019/9/19 11:08:00
--  
改为这种方式

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("型号") \'根据型号分组
bd1.Totals.AddDef("数量","进货_数量") \'对数量进行统计
bd1.Totals.AddDef("金额","进货_金额") \'对金额进行统计
bd1.Filter = "名称 = \'1\'" 
dt1 = bd1.BuildDataSource()

Dim jb2 As New SQLJoinTableBuilder("查询表1","销售单")
jb2.AddCols("型号",True)
jb2.AddExp("销售_数量","Sum({销售单}.数量)")
jb2.AddExp("销售_金额","Sum({销售单}.数量 * {销售单}.售价)")
jb2.Filter = "型号 in (select 型号 from {进货单} where 名称 = \'1\')" 
‘’Output.Show(jb2.BuildSql())
Dim dt2 As fxDataSource = jb2.BuildDataSource()

Dim jb3 As New SQLJoinTableBuilder("查询表1","退货单")
jb3.AddCols("{退货单}.型号",True)
jb3.AddExp("退货_数量","Sum({退货单}.数量)")
jb3.AddExp("退货_金额","Sum({退货单}.数量 * {退货单}.单价)")
jb3.Filter = "型号 in (select 型号 from {进货单} where 名称 = \'1\')" 
‘’Output.Show(jb3.BuildSql())
Dim dt3 As fxDataSource = jb3.BuildDataSource()
dt1.Combine("型号",dt2,"型号") \'将销售统计数据组合到进货统计数据
dt1.Combine("型号",dt3,"型号")

dt1.show("查询表1")