Foxtable(狐表)用户栏目专家坐堂 → 我测试的组合统计结果怎么就不行呢?


  共有14488人关注过本帖树形打印复制链接

主题:我测试的组合统计结果怎么就不行呢?

帅哥哟,离线,有人找我吗?
ybil
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4916 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2011/6/12 20:39:00 [显示全部帖子]

以下是引用kylin在2011-6-10 19:12:00的发言:

我刚才试运行一下,其实是你的代码有问题,原因在于,你将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()


 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图未命名.png
图片点击可在新窗口打开查看
[此贴子已经被作者于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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4916 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2011/6/12 20:49:00 [显示全部帖子]

以下是引用狐狸爸爸在2011-6-12 20:23:00的发言:

这个问题,kylin兄的判断是正确的,必须用不同的列名的,既然是编码,分别制定名称吧。

join语句虽然允许同名列,但是会自动改名,还不如自己明确指定一个列名好。


虽如此,组合多个分组占比(bd.GroupProportion = True)如何改个好看点的名称呢?



 回到顶部