以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  边学边练手,请教SQLCrossTableBuilder用法  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=6501)

--  作者:唐尸三摆手
--  发布时间:2010/4/6 16:01:00
--  边学边练手,请教SQLCrossTableBuilder用法

数据源为erp,有四个表
第一个表aec,有订单号,合同号,产品编码,计划数量,交货期五列(其他列省略不提)。
第二个表eba,有合同号,销售单位两列(其他列省略不提)。
第三个表aaa,有产品编码,产品名称,分类码三列。
第四个表aam,有分类码,分类名称两列。


关联情况:aec表和eba表通过“合同号”建立关联;aec表和aaa表通过“产品编码”建立关联。aaa表和aam表通过“分类码”建立关联。

现在希望通过SQLCrossTableBuilder来实现这样的效果:

垂直分组:aec表中的"产品编码"对应的“分类码”和“分类名称”
水平分组:aec表中的“交货期”,按月分组。
统计列:aec表中的“计划数量”

 

请高手指教一下,如何设置代码,自己没弄出来,有点复杂,呵呵

 

Dim b As New SQLCrossTableBuilder("统计表1",aec)
b.C
b.AddTable(aec,"产品编码",aaa,"产品编码") \'添加统计表
b.AddTable(aaa,"分类码",aam,"分类码") \'添加统计表
b.AddCols(aaa,"分类码")
b.AddCols(aam,"分类名称")
b.HGroups.AddDef("分类码")
b.HGroups.AddDef("分类名称")
b.VGroups.AddDef("交货期",DateGroupEnum.Month,"月")
b.Totals.AddDef("计划数量")
b.Build \'生成统计表
Maintable = Tables("统计表1")


此主题相关图片如下:pic054.jpg
按此在新窗口浏览图片
[此贴子已经被作者于2010-4-6 16:06:09编辑过]

--  作者:唐尸三摆手
--  发布时间:2010/4/6 17:37:00
--  

各位能不能帮帮忙啊,如何能实现上述效果啊,就是太复杂啊,前两列都不是基表中的字段


--  作者:mr725
--  发布时间:2010/4/6 17:42:00
--  
给个例子帮你测试,光看图不得要领,因为情况多样。

也许你得用 aaa 表作为基础表来统计更好。
[此贴子已经被作者于2010-4-6 19:59:45编辑过]

--  作者:唐尸三摆手
--  发布时间:2010/4/7 15:23:00
--  
终于实现了,可是filter条件中能否加入变量呢


--  作者:狐狸爸爸
--  发布时间:2010/4/7 15:24:00
--  
以下是引用唐尸三摆手在2010-4-7 15:23:00的发言:
终于实现了,可是filter条件中能否加入变量呢


动态合成表达式,这可是基本功哦


--  作者:唐尸三摆手
--  发布时间:2010/4/9 13:41:00
--  
Dim b As New SQLCrossTableBuilder("a","aec00000")
b.c
b.AddTable("aec00000","itemcode","aaa00000","code") \'添加统计表
b.AddTable("aec00000","id_contract","eba00000","id_contract") \'添加统计表
b.AddTable("aaa00000","classcode","aam00000","classcode") \'添加统计表
b.AddCols("aam00000","classcode") \'指定列来源
b.AddCols("eba00000","sellunit") \'指定列来源
b.AddCols("aam00000","classname") \'指定列来源
b.HGroups.AddDef("classcode","分类码") \'添加水平分组
b.HGroups.AddDef("classname".trim(),"分类名称") \'添加水平分组
b.VGroups.AddDef("requiredate",DateGroupEnum.none) \'添加垂直分组
b.Totals.AddDef("plannum") \'添加数量列用于统计
b.VerticalTotal=true


classname列内容有空格,希望在统计结果中删除掉,上述红色部分代码设置为什么不行呢
[此贴子已经被作者于2010-4-9 13:41:50编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/4/9 17:48:00
--  
1、代码不能用在SQL语句中,SQL语句有自己函数
2、表达式应该用AddExp
3、SQL Server没有Trim

b.HGroups.AddExp("Replace(classname, \' \', \'\'", "分类名称") \'添加水平分组
--  作者:唐尸三摆手
--  发布时间:2010/4/10 10:02:00
--  

提示无法完成延时准备