ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: emiliu

[求助] 如何ACCESS整理复杂多层次的BOM

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-2-4 23:07 | 显示全部楼层
本帖最后由 Renco 于 2012-2-4 23:09 编辑

BOM一般指的是物料清单,但在实际使用时,会涉及到多层次(多阶)的问题
简单的例子:
a.从数据表的结构角度来说呢,就一个表,其中须【主件物料】,【耗用物料】,【用量】,就可以形成一个简单的多阶BOM表,当然单位、名称规格等等信息也是可以增加,或通过查询等方式,与其他表扩展增加其他相关信息字段,
b.从运算逻辑解度来说呢,是利用递归模式进行相关读取计算的
c.从展开形式来说呢,就象我们打开的【资源管理器】一样,一层层打开,直到最后一层,而最后一层,对于生产制造行业来说呢,应当是采购件(不要说空气,我们就当空气是不要钱的采购件吧。呵。。)
d.从应用上来说呢,除最后一层应当为采购件外(或不要钱的外.呵。。加上这句),非最后一层的,从实用上来说,一般会是二种可能,一种是制造件,即须公司自已生产或委外生产的,另一种是采购件,但有的仁兄会说了,如XX物料公司可生产,但从某些原因问题,公司不生产或很少生产,那这时是自制件呢还是采购??其实呢,自制件和采购件并不是绝对划分,只是对于做计划时的默认生成BOM,如上述情况那大可认作为采购件,因为现在的哪个软件系统没说采购件不能自制的。
其实呢,在真正使用时,可能根据软件计算逻辑的不同,存在的性质也不只是自制件和采购件二种,大家可以多聊聊

顺便说一下,去问软件商呢,不如到坛子里问问,软件商呢可没太多的功夫来教你的呢!

TA的精华主题

TA的得分主题

发表于 2012-3-7 14:32 | 显示全部楼层
一般数据库系统都是有标准数据表的BOM的,没你讲的那么复杂,在数据型的BOM表中,层次是独立一个字段的,以下为基本格式,可实现多种运算及转换:

==================================================
成品料号     层次      子件料号              BOM用量单位          BOM用量         底数
A               0          Packing 1                           pcs                    1            20
A               0          WIP-1                                pcs                    1             1
A               1          a1                                     pcs                    6             1
A               1          WIP-2                                pcs                    4             1
A               2          a2                                     pcs                    1             1
.....

A--成品料号
WIP-*----半成品料号
a-原材料料号(子件料号)
**如无底数,应将包材等一个单位应用于多个成品的耗用折算是小数,即换算成单位成品耗用量;部份ERP软件设底数是为了减少或避免因小数点位数而导致的影响。

TA的精华主题

TA的得分主题

发表于 2012-3-7 14:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
按照楼主的例子,复制一张表就可以了:新建一个查询,在保留现有表的结构外,将首字段半成品料件的BOM添加到第三列以后就可以实现。

TA的精华主题

TA的得分主题

发表于 2012-3-7 14:59 | 显示全部楼层
本帖最后由 szjohnchan 于 2012-3-7 14:59 编辑

楼主,看看可以用吗?不过只是简单的查询转换,没什么复杂的VBA代码。Access2007

test.zip

24.86 KB, 下载次数: 904

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-3-11 17:11 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-3-27 15:56 | 显示全部楼层
本帖最后由 xyesterday 于 2012-3-27 15:58 编辑

下面是一个在firebird数据库里实现的BOM展开procedure,供大家参考..
程序有一个关键字就是LEVEL,,'E'表示是成品或是中间层,'L'表示最底层,也就是进行MRP运算的物料.

其实好的BOM管理系统都会有这么一个关键字.  如果没有的话,最容易想到的原因就是:循环的次数太多了,导致系统运算量过大.
  1. Create Or Alter Procedure BOM_EXPAND (
  2.     TOP_NUM Varchar(20),
  3.     UNIT Varchar(20),
  4.     QTY Integer)
  5. Returns (
  6.     OTOP_NUM Varchar(20),
  7.     OUNIT Varchar(20),
  8.     OQTY Integer)
  9. As
  10. Declare Variable C Varchar(20);
  11. Declare Variable Q Integer;
  12. begin
  13.    OTOP_NUM=TOP_NUM;
  14.    FOR SELECT "ChildNUM","Usage" FROM "BOM"
  15.    WHERE "ParentNUM"=:UNIT AND "Level"='L'
  16.    INTO :C,:Q DO
  17.    BEGIN
  18.     INSERT INTO "BOMVIEW" VALUES(:top_NUM,:C,:Q*:QTY);
  19.    END

  20.   FOR SELECT "ChildNUM","Usage" FROM "BOM"
  21.   WHERE "ParentNUM"=:UNIT AND "Level"!='L'
  22.   INTO :OUNIT,:OQTY DO
  23.   BEGIN
  24.    EXECUTE PROCEDURE "BOM_EXPAND" OTOP_NUM,OUNIT,OQTY*QTY
  25.    RETURNING_VALUES OTOP_NUM,OUNIT,OQTY;
  26.   END
  27. end
复制代码
bom.jpg

TA的精华主题

TA的得分主题

发表于 2012-3-28 22:12 | 显示全部楼层
我也想学习一下BOM的数据结构是什么样的?

TA的精华主题

TA的得分主题

发表于 2012-3-29 13:09 | 显示全部楼层
添加一个ACCESS的BOM,里面有一个小VBA程序.如果是大批量的,需要加上一个循环语句.

BOM.zip

13.19 KB, 下载次数: 705

TA的精华主题

TA的得分主题

发表于 2012-4-8 15:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-2-6 21:31 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-24 04:21 , Processed in 0.037867 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表