现有两个数据表dtMrpBom、dtMrpBomChild。dtMrpBom的字段为ID,BomID;
记录行为:
ID     BomID
1      Bom1
2      Bom2
...dtMrpBomChild的字段为ID,BomID,ParentID,MaterialID
记录行为:
ID     BomID    ParentID    MaterialID
1      Bom1     0           Mat1
2      Bom1     0           Mat2
3      Bom1     1           Mat11
4      Bom1     1           Mat12
...即在子表中Bom1的记录为一树形:
Bom1
|______
|     |
Mat1  Mat2
|
|_______
|      |
Mat11  Mat12现求一嵌套算法,可以实现将Bom1在子表dtMrpBomChild的记录全部复制成Bom2,即Bom2的记录与Bom1的记录是相同的。谢谢高手!

解决方案 »

  1.   

    先找出 BomID    为Bom1的所有记录,然后全部复制 把BomID改成Bom2就行了
      

  2.   

    楼上的,表中有个ParentID字段,存的是上级的ID,你的方法解决不了这个。
      

  3.   

    可能我在贴子里没有说清楚,BOM2在结构上虽然与BOM1一样,但是子件中的ParentID跟BOM1不一样,是新增的父件的ID
      

  4.   

    问题先不谈,表设计的不好
    其实只要一个表
    ID        ParentID    MaterialID
    1          0           Mat1
    2          0           Mat2
    3          1           Mat11
    4          1           Mat12最多在添加一个字段,表明是不是最终产品
    所以,你的设计把问题复杂化了。
      

  5.   

    问题先不谈,表设计的不好
    其实只要一个表
    ID        ParentID    MaterialID
    1          0           Mat1
    2          0           Mat2
    3          1           Mat11
    4          1           Mat12最多在添加一个字段,表明是不是最终产品
    所以,你的设计把问题复杂化了。--------------------------------
    这样的设计是考虑了很久的,虽然在这里实现BOM复制时复杂化了,但在MRP和MPS里进行运算时却简单了许多。
      

  6.   

    重新想,使用这样两个表:Material
    ID  materialName
    1    BOM1  
    2    BOM2
    3    Mat1
    4    Mat2
    5    Mat11
    6    Mat12BOM表
    ID        BOMID    MaterialID
    1          1           3
    2          1           4
    3          3          Mat11
    4          3          Mat12
    这样的话,能够表达你的意思,而且拷贝起来也方便
    只要在BOM表里面添加两个记录
    ID        BOMID    MaterialID
    1          2           3
    2          2          4就可以了
    不知道老兄以为如何?
      

  7.   

    我要的复制后的结果如下:
    ID     BomID    ParentID    MaterialID
    1      Bom1     0           Mat1
    2      Bom1     0           Mat2
    3      Bom1     1           Mat11
    4      Bom1     1           Mat12
    ----->复制后--->
    5      Bom2     0           Mat1
    6      Bom2     0           Mat2
    7      Bom2     5           Mat11
    8      Bom2     5           Mat12不知道我表达清楚了没?
      

  8.   

    ParentID=0 代表的是第一级子件
      

  9.   

    我明白你的意思,只是觉得这样设计的不好你这样的设计,无论是哪一级子件,下面所有重复的部分都要重写一份。如果照我那样的设计,复制一个Bom2只需要添加两个记录ID        BOMID    MaterialID
    3          2          3
    4          2          4而且我没感觉到这里面有什么不方便的地方仅供参考