Foxtable(狐表)用户栏目专家坐堂 → 边学边练手,请教SQLCrossTableBuilder用法


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

主题:边学边练手,请教SQLCrossTableBuilder用法

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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
边学边练手,请教SQLCrossTableBuilder用法  发帖心情 Post By:2010/4/6 16:01:00 [只看该作者]

数据源为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编辑过]

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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2010/4/6 17:37:00 [只看该作者]

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


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/4/6 17:42:00 [只看该作者]

给个例子帮你测试,光看图不得要领,因为情况多样。

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

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2010/4/7 15:23:00 [只看该作者]

终于实现了,可是filter条件中能否加入变量呢


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/4/7 15:24:00 [只看该作者]

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


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


 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/4/9 17:48:00 [只看该作者]

1、代码不能用在SQL语句中,SQL语句有自己函数
2、表达式应该用AddExp
3、SQL Server没有Trim

b.HGroups.AddExp("Replace(classname, ' ', ''", "分类名称") '添加水平分组

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2010/4/10 10:02:00 [只看该作者]

提示无法完成延时准备


 回到顶部