删除节点
删除节点也有学问?也需要专门讲述? 嗯,还真的是这么回事,而且学问不小。
1、打开CaseStudy目录下的示例文件:BOM数据.Table,选择表"物料清单A",并打开内联BOM树
2、这个表有22行数据。
3、选择P02下的子节点M04,这个节点有10个下级节点,对应有10行数据:
4、现在我们给M04增加一个子节点M08,并给M08再增加两个子节点,分别为E21和E22,现在M04合计有13个下级节点,对应有13行数据,其中最后三行是新增的:
而总的行数也来到了25行:
5、右击节点M04,从弹出的快捷菜单中执行"删除"命令,删除节点M04,然后选择节点"显示所有行", 可以看到剩下21行数据:
显然,系统没有删除M04节点下的全部数据行,只是删除了M04节点对应的一行数据和之前新增加的3行,合计删除了4行,25 - 4 = 21,所以剩下21行数据:
这是自然的,你删除M04,只是表示P02不再使用M04这个中间件,而M04本身,以及M04用到的各种中间件,可能也被其他产品和中间件使用了,
也可能目前虽然没有使用,但需要留着备用,所以通常并没有删除之必要。
而M08节点因为是新增的,且没有被其他节点引用,系统判断需要一起删除M08的可能性非常大,难不成我们删除M04节点之后,难道还要手工从数据表中找出M08的相关数据行进行删除?
但我们还需要考虑两种情景:(这两点请先不要测试,等学习完本节内容再说,以免影响接下来的深层删除的测试。)
1、假定你在M04节点之下,新增了多个类似M08这样的中间件,结果发现P02不用M04了,你需要删除M04,但是又希望保留刚刚增加的M08等中间件的数据行备用,那么该怎么办呢?很简单,先保存数据,然后再删除M04节点即可。
2、或者你在M04节点之下,新增了多个类似M08这样的中间件,结果发现搞错了,不应该在M04下增加,应该在另一个节点(例如M03)下增加,那么该怎么挽救呢?
同样简单,先保存数据,然后在M04下删除新增的M08等节点,最后在M03下添加一个M08节点,你刚刚做的工作就都回来了。
深层删除
不要保存,重新打开"BOM数据.Table",选择表"物料清单A",并打开内联BOM树
如果希望彻底删除M04节点,以及所有子节点对应的数据行呢?
很简单,右击P02下的M04节点,从弹出的快捷菜单中执行"深层删除"命令。
现在选择"显示所有行"节点,可以看到只剩下13行数据了:
还是不对?
如果你足够细心,你会发现还是不对,因为M04有10个子节点,加上M04自身,合计要删除的节点有11个,也就是要删除11个数据行,22 -
11,剩下的应该是11行,而不是13行啊?
为什么呢?
这是因为M04下有个子节点M02,而这个M02也出现在P01中,如果深层删除M04节点的时候,也将M02节点对应的两行数据删除,那会出大事的!
所以M02对应的数据行必须保留:
所以深层删除也是有所保留的,如果一个中间件被其他产品或中间件使用了,那是无论如何都删除不掉的。
显然层级BOM树是没有深层删除命令的,因为层级BOM树的每一个同名节点,都在BOM表中有自己独立的数据行,选择表"物料清单B",你就可以看到两个M02节点各自有对应的数据行:
一个简单的删除操作,居然被Foxtable考虑得如此周到细致,嗯,我忍不住要骄傲了,