以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  表计算  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=75984)

--  作者:kaituozhe
--  发布时间:2015/10/19 13:28:00
--  表计算
表中的数据很多,有几万行,列也十几列,数据量很大,我想增加一个菜单实现计算功能,比如有一个产品表,有几万种产品(假设),需要计算销售数量等数据,我现在的想法是先添加产品名称,然后再点按钮计算各种数据。
--  作者:kaituozhe
--  发布时间:2015/10/19 13:28:00
--  
该怎么做,有现成的例子吗?
--  作者:大红袍
--  发布时间:2015/10/19 14:22:00
--  

直接做报表统计。比如

 

http://www.foxtable.com/help/topics/1626.htm

 

 

 


--  作者:kaituozhe
--  发布时间:2015/10/19 14:32:00
--  

Dim bd1 As New SQLGroupTableBuilder("统计表1","甲银行")
Dim dt1 As fxDataSource
bd1.Groups.AddDef("对方账号") \'根据对方账号分组
bd1.Groups.AddDef("对方户名") \'根据对方账号分组
bd1.Totals.AddDef("借方金额","银行_借方") \'对数量进行统计
bd1.Totals.AddDef("贷方金额","银行_贷方") \'对数量进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New SQLGroupTableBuilder("统计表2","乙银行")
Dim dt2 As fxDataSource
bd2.Groups.AddDef("对方账号") \'根据对方账号分组
bd2.Groups.AddDef("对方户名") \'根据对方账号分组
bd2.Totals.AddDef("借方金额","银行_借方") \'对数量进行统计
bd2.Totals.AddDef("贷方金额","银行_贷方") \'对数量进行统计
dt2 = bd2.BuildDataSource()

Dim nms As String() = {"对方账号","对方户名"} \'指定连接列
dt1.Combine(nms,dt2,nms) \'将销售统计数据组合到进货统计数据
dt1.Show("统计表1") \'显示统计结


--  作者:kaituozhe
--  发布时间:2015/10/19 14:34:00
--  

我用上述代码统计甲乙公司银行数据,这段一直提示没对方账号列,这两个表都有这个列,而且是从字段名抄过来的,不知道是什么原因


--  作者:kaituozhe
--  发布时间:2015/10/19 14:38:00
--  
统计出来的结果是临时表没有办法,我想保存怎么办,还需要再增加一个表然后粘贴过去吗
--  作者:大红袍
--  发布时间:2015/10/19 14:39:00
--  

你看一下表结构,看是否正确,直接拷贝粘贴列名

 

http://www.foxtable.com/help/topics/0193.htm

 


--  作者:kaituozhe
--  发布时间:2015/10/19 14:44:00
--  

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,"型号") \'将退货统计数据组合到进货统计数据
dt1.Show(
"统计表1") \'显示统计结果

 

 

用这个统计可以统计,但是用这个方法需要加载全部数据,且数据量太大,而且交付后操作方便,


--  作者:大红袍
--  发布时间:2015/10/19 14:45:00
--  
用sqlGroupTableBuilder
--  作者:kaituozhe
--  发布时间:2015/10/19 14:46:00
--  

Dim bd1 As New GroupTableBuilder("账号统计",DataTables("甲公司"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("对方账号") \'根据品名分组
bd1.Groups.AddDef("对方户名") \'根据型号分组
bd1.Totals.AddDef("借方金额","宏江_借方") \'对数量进行统计
bd1.Totals.AddDef("贷方金额","宏江_贷方") \'对金额进行统计
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("账号统计",DataTables("乙公司"))
Dim dt2 As fxDataSource
bd2.Groups.AddDef("对方账号") \'根据品名分组
bd2.Groups.AddDef("对方户名") \'根据型号分组
bd2.Totals.AddDef("借方金额","银行_借方") \'对数量进行统计
bd2.Totals.AddDef("贷方金额","银行_贷方") \'对金额进行统计
dt2 = bd2.BuildDataSource()

Dim nms As String() = {"对方账号","对方户名"} \'指定连接列
dt1.Combine(nms,dt2,nms) \'将销售统计数据组合到进货统计数据
dt1.Show("账号统计") \'显示统计结果

 

由这个方法统计就没有什么问题,但是没有办法从后台统计