Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
呵呵,收到,一般你搞不定的,应该就是bug了,我抽时间看看。
正在忙个功能,要等等。
用foxtable自带的例子试了下,只要把统计列改成表达式,就组合失败。
如:bd2.Totals.AddExp("金额","数量*单价","销售_金额")
另外建议,在用Combine组合时,可否增加以下参数:
Combine(LeftColName, LeftCols,RightDataSource, RightColName,RightCols,Name, Expression,Caption)
其中,LeftCols为左表要组合的列名集合,RightCols为右表要组合的列名集合,
Name为新增列名,Expression为计算表达式,可以根据两表的相关列生成新的数据,Caption为新增列的别名。
请看附件,统计列是表达式,怎么也组合不起来。
外部数据库用的是CaseStudy文件夹中的 订单.mdb
下载信息 [文件大小:308.0 KB 下载次数:2] | |
![]() |
我刚才试运行一下,其实是你的代码有问题,原因在于,你将5个表达式统计列的名称设成一样了,
我稍微修改一下表达式列名称之后就可以了,参考如下:
Dim bd1 As New SQLGroupTableBuilder("tjb1","订单")
bd1.C
bd1.Filter = "客户='CS01'"
bd1.Groups.AddDef("产品")
bd1.Totals.AddExp("部门_CS01","数量*单价")
bd1.GroupProportion = True '生成分组占比
Dim dt1 As fxDataSource = bd1.BuildDataSource
Dim bd2 As New SQLGroupTableBuilder("tjb2","订单")
bd2.C
bd2.Filter = "客户='CS02'"
bd2.Groups.AddDef("产品")
bd2.Totals.AddExp("部门_CS02","数量*单价")
bd2.GroupProportion = True '生成分组占比
Dim dt2 As fxDataSource = bd2.BuildDataSource()
Dim bd3 As New SQLGroupTableBuilder("tjb3","订单")
bd3.C
bd3.Filter = "客户='CS03'"
bd3.Groups.AddDef("产品")
bd3.Totals.AddExp("部门_CS03","数量*单价")
bd3.GroupProportion = True '生成分组占比
Dim dt3 As fxDataSource = bd3.BuildDataSource()
Dim bd4 As New SQLGroupTableBuilder("tjb4","订单")
bd4.C
bd4.Filter = "客户='CS04'"
bd4.Groups.AddDef("产品")
bd4.Totals.AddExp("部门_CS04","数量*单价")
bd4.GroupProportion = True '生成分组占比
Dim dt4 As fxDataSource = bd4.BuildDataSource()
Dim bd5 As New SQLGroupTableBuilder("tjb5","订单")
bd5.C
bd5.Filter = "客户='CS05'"
bd5.Groups.AddDef("产品")
bd5.Totals.AddExp("部门_CS05","数量*单价")
bd5.GroupProportion = True '生成分组占比
Dim dt5 As fxDataSource = bd5.BuildDataSource()
我刚才试运行一下,其实是你的代码有问题,原因在于,你将5个表达式统计列的名称设成一样了,
这个不能说是代码的问题。因为它们是属于不同的表,字段名称应该可以一样的,就象AddDef可以增加多个相同的统计字段名一样,如:
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()
Combine只是将不同的表组合起来而已,同样的字段名分布在不同的表中应该也可以组合起来的,就象sql的join,左表和右表即使字段名称全部相同,也照样可以组合到一起。而且,即使按照你这种方法,把统计列名称设置为不一样的,但AddExp中设置的别名依然无法正确显示。
按照你这么个测试说明的话,应该是有Bug,呵呵
我的这个发现还不是问题的本质了,呵呵
这个问题,kylin兄的判断是正确的,必须用不同的列名的,既然是编码,分别制定名称吧。
join语句虽然允许同名列,但是会自动改名,还不如自己明确指定一个列名好。
我刚才试运行一下,其实是你的代码有问题,原因在于,你将5个表达式统计列的名称设成一样了,
我稍微修改一下表达式列名称之后就可以了,参考如下:
Dim bd1 As New SQLGroupTableBuilder("tjb1","订单")
bd1.C
bd1.Filter = "客户='CS01'"
bd1.Groups.AddDef("产品")
bd1.Totals.AddExp("部门_CS01","数量*单价")
bd1.GroupProportion = True '生成分组占比
Dim dt1 As fxDataSource = bd1.BuildDataSource
Dim bd2 As New SQLGroupTableBuilder("tjb2","订单")
bd2.C
bd2.Filter = "客户='CS02'"
bd2.Groups.AddDef("产品")
bd2.Totals.AddExp("部门_CS02","数量*单价")
bd2.GroupProportion = True '生成分组占比
Dim dt2 As fxDataSource = bd2.BuildDataSource()
Dim bd3 As New SQLGroupTableBuilder("tjb3","订单")
bd3.C
bd3.Filter = "客户='CS03'"
bd3.Groups.AddDef("产品")
bd3.Totals.AddExp("部门_CS03","数量*单价")
bd3.GroupProportion = True '生成分组占比
Dim dt3 As fxDataSource = bd3.BuildDataSource()
Dim bd4 As New SQLGroupTableBuilder("tjb4","订单")
bd4.C
bd4.Filter = "客户='CS04'"
bd4.Groups.AddDef("产品")
bd4.Totals.AddExp("部门_CS04","数量*单价")
bd4.GroupProportion = True '生成分组占比
Dim dt4 As fxDataSource = bd4.BuildDataSource()
Dim bd5 As New SQLGroupTableBuilder("tjb5","订单")
bd5.C
bd5.Filter = "客户='CS05'"
bd5.Groups.AddDef("产品")
bd5.Totals.AddExp("部门_CS05","数量*单价")
bd5.GroupProportion = True '生成分组占比
Dim dt5 As fxDataSource = bd5.BuildDataSource()