我有一物料清单结构,请高手帮写出展开的存储过程
数据结构如下:
BOM主表:
BOM_M
   bom_no      varchar(50) //BOM编号
   parent_no   varchar(50) //母件编码BOM子表
BOM_D
   bom_no      varchar(50)//BOM编号
   bom_lot     varchar(50)//BOM批号,因为一个物料可能由一个上的物料组成,用批号记录
   parent_no   varchar(50)//母件编码
   child_no    varchar(50)//子件编码
   unit_qty1   float(20,8)//单位净用量
   unit_qty2   float(20,8)//单位水口用量,因涉及注塑成型,所以定义了 单位水口用量
   dishu       int        //用量底数,用于单位净用量很小时.
   suhao       float(20,8)//损耗率
   
请高手能否帮忙写出成品的BOM完全展开过程----展开到最后一层
如有物料A,B,C,D,E,F,G,H,I,J,K
BOM_M 的记录
001,A
002,B
003,C
004,D
005,E
006,FBOM_D的记录
001,001_001,A,B,1,0,1,0.02
001,001_002,A,C,1,0,1,0.02
002,002_001,B,G,1,0,1,0.02
002,002_002,B,H,1,0,1,0.02
003,003_001,C,K,0.02,0.5,1000,0.15
004,004_001,H,J,0.03,0.6,1000,0.15
请展开A到最后一层   

解决方案 »

  1.   

    ---是不是这样的
    http://community.csdn.net/Expert/topic/5473/5473611.xml?temp=.2339899
      

  2.   

    清单里记录有母件ID,子件ID,子件数量
    就可以构成bom单了要解析某个物件有多少个子件构成,用个递归函数来解开它
      

  3.   

    leo_lesley(leo)
    谢谢你的回复
    看过你提到的帖子,有一点象.因为子件的可能用于不同的物料清单中,且所在层数可能不同.如果我用展开表的数据结构来记录这些信息,应该怎样做?
    存放展开BOM的数据结构如下:
    BOM_EXM
       bom_no,
       parent_no   //被展开的母件----相对的成为母件
    BOM_EXD
       bom_no
       bom_lot
       bom_treepath  记录BOM的层次路径
       parent_no     最顶层的物料编码
       parent_no1    母件编码
       child_no,     子件编码
       unit_qty1
       unit_qty2
       dishu
       sunhao
       level_num
      

  4.   

    bom_treepath 记录BOM的层次路径
    parent_no 最顶层的物料编码这两个是冗余的了,还不如用算法算出来。否则做bom维护的时候,你还要另外算出这两个字段填写上去
      

  5.   

    sbks(hwnd,&rect) bom_treepath 记录BOM的层次路径
    parent_no 最顶层的物料编码
    是用展开存储过程算出的,如果修改了BOM结构须重新计算,BOM_EXM,BOMEXD是保存展开后的BOM,供生产使用