以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 我测试的组合统计结果怎么就不行呢? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=10532) |
||||
-- 作者:reachtone -- 发布时间:2011/6/10 17:25:00 -- 我测试的组合统计结果怎么就不行呢? 请看附件,统计列是表达式,怎么也组合不起来。 外部数据库用的是CaseStudy文件夹中的 订单.mdb
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/6/10 17:33:00 -- 呵呵,收到,一般你搞不定的,应该就是bug了,我抽时间看看。 正在忙个功能,要等等。 |
||||
-- 作者:reachtone -- 发布时间:2011/6/10 17:41:00 -- 用foxtable自带的例子试了下,只要把统计列改成表达式,就组合失败。 如:bd2.Totals.AddExp("金额","数量*单价","销售_金额") |
||||
-- 作者:reachtone -- 发布时间:2011/6/10 17:54:00 -- 另外建议,在用Combine组合时,可否增加以下参数: Combine(LeftColName, LeftCols,RightDataSource, RightColName,RightCols,Name, Expression,Caption) Name为新增列名,Expression为计算表达式,可以根据两表的相关列生成新的数据,Caption为新增列的别名。
[此贴子已经被作者于2011-6-10 17:55:00编辑过]
|
||||
-- 作者:kylin -- 发布时间:2011/6/10 19:12:00 -- 以下是引用reachtone在2011-6-10 17:25:00的发言:
请看附件,统计列是表达式,怎么也组合不起来。 外部数据库用的是CaseStudy文件夹中的 订单.mdb
我刚才试运行一下,其实是你的代码有问题,原因在于,你将5个表达式统计列的名称设成一样了,
我稍微修改一下表达式列名称之后就可以了,参考如下:
Dim bd1 As New SQLGroupTableBuilder("tjb1","订单") Dim bd2 As New SQLGroupTableBuilder("tjb2","订单") Dim bd3 As New SQLGroupTableBuilder("tjb3","订单") Dim bd4 As New SQLGroupTableBuilder("tjb4","订单") Dim bd5 As New SQLGroupTableBuilder("tjb5","订单") ![]() ![]() [此贴子已经被作者于2011-6-10 19:49:43编辑过]
|
||||
-- 作者:reachtone -- 发布时间:2011/6/10 22:22:00 -- 以下是引用kylin在2011-6-10 19:12:00的发言:
我刚才试运行一下,其实是你的代码有问题,原因在于,你将5个表达式统计列的名称设成一样了, 这个不能说是代码的问题。因为它们是属于不同的表,字段名称应该可以一样的,就象AddDef可以增加多个相同的统计字段名一样,如: Dim bd1 As New
GroupTableBuilder("统计表1",DataTables("进货单"))
Combine只是将不同的表组合起来而已,同样的字段名分布在不同的表中应该也可以组合起来的,就象sql的join,左表和右表即使字段名称全部相同,也照样可以组合到一起。而且,即使按照你这种方法,把统计列名称设置为不一样的,但AddExp中设置的别名依然无法正确显示。 |
||||
-- 作者:kylin -- 发布时间:2011/6/11 7:25:00 -- 按照你这么个测试说明的话,应该是有Bug,呵呵
我的这个发现还不是问题的本质了,呵呵 [此贴子已经被作者于2011-6-11 7:29:05编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/6/12 20:23:00 -- 这个问题,kylin兄的判断是正确的,必须用不同的列名的,既然是编码,分别制定名称吧。 join语句虽然允许同名列,但是会自动改名,还不如自己明确指定一个列名好。 |
||||
-- 作者:ybil -- 发布时间:2011/6/12 20:39:00 -- 以下是引用kylin在2011-6-10 19:12:00的发言:
我刚才试运行一下,其实是你的代码有问题,原因在于,你将5个表达式统计列的名称设成一样了,
我稍微修改一下表达式列名称之后就可以了,参考如下:
Dim bd1 As New SQLGroupTableBuilder("tjb1","订单") Dim bd2 As New SQLGroupTableBuilder("tjb2","订单") Dim bd3 As New SQLGroupTableBuilder("tjb3","订单") Dim bd4 As New SQLGroupTableBuilder("tjb4","订单") Dim bd5 As New SQLGroupTableBuilder("tjb5","订单")
![]() ![]() [此贴子已经被作者于2011-6-10 19:49:43编辑过] 看到长长的公式,忍不住简化的冲动: Dim bd As SQLGroupTableBuilder Dim dt1,dt2,dt3,dt4,dt5 As fxDataSource Dim Ls() As fxDataSource = {dt1,dt2,dt3,dt4,dt5} Dim s() As String = {"CS01","CS02","CS03","CS04","CS05"} For i As Integer = 0 To 4 bd = New SQLGroupTableBuilder("tj","订单") bd.Connection
Name = "dd" bd.Filter = "客户=\'" & s(i) & "\'" bd.Groups.AddDef("产品") bd.Totals.AddExp("部门_" & s(i),"数量*单价") bd.GroupProportion = True Ls(i) = bd.BuildDataSource Next For i As Integer = 1 To 4 Ls(0).Combine("产品",Ls(i),"产品") Next Tables("窗口1_Table1").DataSource = Ls(0) [此贴子已经被作者于2011-6-12 20:40:36编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/6/12 20:45:00 -- 呵呵,希望Y版天天冲动几回。 |