Foxtable(狐表)用户栏目专家坐堂 → BOM数据展开,制造业的高手请进!


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

主题:BOM数据展开,制造业的高手请进!

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/4/18 21:17:00 [显示全部帖子]

以下是引用唐尸三摆手在2010-4-18 15:31:00的发言:

这样测试了一下:

dim al as string="B-WG-XJ-DG-53"
'多级反展
 Dim s As String =  " ;with cte As "  & _
    "(select * from abt00000 where childitem = '"  & al  & "'  "  & _
    "union all  "  & _
    "select a.* from abt00000 a  "  & _
    "join cte on a.childitem  = cte.parentitem) "  & _
    "select  * from cte "

output.show(s)

显示结果为:
 ;with cte As (select * from abt00000 where childitem = 'B-WG-XJ-DG-53'  union all  select a.* from abt00000 a  join cte on a.childitem  = cte.parentitem) select  * from cte
然后拷入查询管理器中:执行到2分30秒还没显示结果


可是为什么正展在瞬间就显示结果呢? 

 

 

 

[此贴子已经被作者于2010-4-18 15:34:27编辑过]


应该索引的原因。parentitem列没有加索引。
可以把abt00000  只留部分实例数据 然后备个份发给我。看到结构才能分析原因。


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/4/19 9:20:00 [显示全部帖子]

jiabiao@yeah.net

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/4/20 9:24:00 [显示全部帖子]

以下是引用唐尸三摆手在2010-4-20 8:18:00的发言:
不知道版主有没有进展,想提个问题,既然BOM多级正展可以这样实现:
;with cte As
(
select * from BOM表 where parentitem = '产品编码'
union all
select a.* from BOM表 a
join cte on a.parentitem  = cte.childitem
)
select  * from cte

那是不是就可以计算出某时间段内所有订单的各级物料需求:

;with cte As
(
select * from BOM表 where parentitem  in (select distinct itemcode from 订单表 where requiredate between '2010-05-05' and '2010-05-10')
union all
select a.* from BOM表 a
join cte on a.parentitem  = cte.childitem
)
select  * from cte

不知道这样分析对不对,版主请指教
[此贴子已经被作者于2010-4-20 8:19:31编辑过]

恩,对的。

那个结构问题明天看吧
这两天上面交代了一个限期任务,明天才能搞定图片点击可在新窗口打开查看


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/4/21 16:09:00 [显示全部帖子]

反展慢的确是索引的原因。我用你的数据测试过,加了索引,反展也是瞬间完成。
你看看你有没权限执行下面代码:
CREATE NONCLUSTERED INDEX [b] ON [dbo].[abt0000]
(
 [childitem] ASC
)

如果没有权限,唯一的办法是让你们的系统管理员,或者软件开发商给childitem列加上索引了。


29楼如果需要子件的耗料数量一直累积相乘,这样改一下代码即可:
;with cte As
(
select *,cast(1 as numeric(18,4)) As CalcNum from abt0000 where parentitem = 'CP-WG-JSG-0210                          '
union all
select a.*,cast(a.num * cte.CalcNum as numeric(18,4)) from abt0000 a
join cte on a.parentitem  = cte.childitem
)
select  * from cte



[此贴子已经被作者于2010-4-21 16:10:04编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/4/22 15:38:00 [显示全部帖子]

没听明白
看SQL语句,deptcode workcentercode 是你自己添加的标量值,并没有任何表储存这两个字段啊?你修改之后,把数据保存在哪里?

datatables("表A").fill(,,true)  只能现实查询结果,没有保存数据的功能。你重新打开项目还要重新fill


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/4/22 22:08:00 [显示全部帖子]

你31楼的sql有问题吧,我看不出来deptcode,workcentercode的来源表。
aec00000  aaa00000  这几个表的表是什么意思?结构是什么?

还有  你用foxtable写的程序  修改 别人设计的数据库数据,可能会引起很多自己想不到的错误。


 回到顶部
总数 17 上一页 1 2