以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  多列统计增加列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=137062)

--  作者:yaojun
--  发布时间:2019/6/27 13:12:00
--  多列统计增加列

各位老师,用如下代码进行三表统计,请问我现在想到统计表里面增加一列“库存数量”,其值“库存数量”=“库存管理”表里面的值“库存数量”,代码该怎么写?

Dim   bd1 As  New   GroupTableBuilder("统计表2",DataTables("订单明细"))
Dim  dt1 As   fxDataSource
 bd1.Groups.AddDef("名称")  \'根据型号分组
bd1.Totals.AddDef("需求数量","订单需求_需求数量")  \'对数量进行统计
bd1.Totals.AddDef("欠领料","订单需求_欠领料")  \'对金额进行统计
dt1 =   bd1.BuildDataSource()

 Dim  bd2 As  New   GroupTableBuilder("统计表3",DataTables("PMC车间计划"))
Dim  dt2  As   fxDataSource
 bd2.Groups.AddDef("名称")  \'根据型号分组
bd2.Totals.AddDef("计划数量","生产计划_计划数量")  \'对数量进行统计
bd2.Totals.AddDef("欠生产","生产计划_欠生产")  \'对金额进行统计
dt2 =   bd2.BuildDataSource()

Dim   bd3 As  New   GroupTableBuilder("统计表4",DataTables("物料需求计划"))
Dim  dt3 As   fxDataSource
 bd3.Groups.AddDef("名称")  \'根据型号分组
bd3.Totals.AddDef("计划数量","采购计划_计划数量")  \'对数量进行统计
bd3.Totals.AddDef("欠入库","采购计划_欠入库")  \'对金额进行统计
 dt3 =  bd3.BuildDataSource()

 

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

Forms("物料统计").Open

 

Tables("物料统计_Table1").DataSource =   dt1  \'将统计结果绑定到Table
 With  DataTables("物料统计_Table1").DataCols  \'用表达式列计算库存数据
    .Add("物料统计_需求数量",Gettype(Integer),  "IsNull([生产计划_欠生产],0) + ISNULL([采购计划_欠入库],0) + ISNULL([库存管理_库存数量],0) - ISNULL([订单需求_欠领料],0)")
     
End With


--  作者:有点甜
--  发布时间:2019/6/27 15:05:00
--  

再加一个库存管理表

 

Dim   bd4 As  New   GroupTableBuilder("统计表4",DataTables("库存管理"))
Dim  dt4 As   fxDataSource
bd4.Groups.AddDef("名称")  \'根据型号分组
bd4.Totals.AddDef("库存数量","库存数量")  \'对数量进行统计
dt4 =  bd4.BuildDataSource()


--  作者:yaojun
--  发布时间:2019/6/27 15:27:00
--  

Dim   bd1 As  New   GroupTableBuilder("统计表2",DataTables("订单明细"))
Dim  dt1 As   fxDataSource
 bd1.Groups.AddDef("名称")  \'根据型号分组
bd1.Totals.AddDef("需求数量","订单需求_需求数量")  \'对数量进行统计
bd1.Totals.AddDef("欠领料","订单需求_欠领料")  \'对金额进行统计
dt1 =   bd1.BuildDataSource()

 Dim  bd2 As  New   GroupTableBuilder("统计表3",DataTables("PMC车间计划"))
Dim  dt2  As   fxDataSource
 bd2.Groups.AddDef("名称")  \'根据型号分组
bd2.Totals.AddDef("计划数量","生产计划_计划数量")  \'对数量进行统计
bd2.Totals.AddDef("欠生产","生产计划_欠生产")  \'对金额进行统计
dt2 =   bd2.BuildDataSource()

Dim   bd3 As  New   GroupTableBuilder("统计表4",DataTables("物料需求计划"))
Dim  dt3 As   fxDataSource
 bd3.Groups.AddDef("名称")  \'根据型号分组
bd3.Totals.AddDef("计划数量","采购计划_计划数量")  \'对数量进行统计
bd3.Totals.AddDef("欠入库","采购计划_欠入库")  \'对金额进行统计
 dt3 =  bd3.BuildDataSource()

Dim   bd4 As  New   GroupTableBuilder("统计表4",DataTables("库存管理"))
Dim  dt4 As   fxDataSource
bd4.Groups.AddDef("名称")  \'根据型号分组
bd4.Totals.AddDef("库存数量","库存数量")  \'对数量进行统计
dt4 =  bd4.BuildDataSource()


dt1.Combine("名称",dt2,"名称")  \'将销售统计数据组合到进货统计数据
dt1.Combine("名称",dt3,"名称")  \'将退货统计数据组合到进货统计数据
dt1.Combine("名称",dt4,"名称")  \'将退货统计数据组合到进货统计数据
Forms("物料统计").Open

 

Tables("物料统计_Table1").DataSource =   dt1  \'将统计结果绑定到Table
 With  DataTables("物料统计_Table1").DataCols  \'用表达式列计算库存数据
    .Add("物料统计_需求数量",Gettype(Integer),  "IsNull([生产计划_欠生产],0) + ISNULL([采购计划_欠入库],0) + ISNULL([库存数量],0) - ISNULL([订单需求_欠领料],0)")
     
End With

 

这样不是很理想,因为统计表里显示所有的“库存管理”表的“名称”行,显得内容太多,能否变成依据以上统计好的“名称”行,显示出库存数量,而不是显示所有库存数量


--  作者:有点甜
--  发布时间:2019/6/27 17:15:00
--  

生成后,隐藏某些数据即可,如

 

Tables("物料统计_Table1").filter = "某列 is not null"