通过递归函数来遍历BOM,当遇到一个子级跟最开始的父级相同时,退出遍历,直接判定BOM不合格。
我写的递归函数如下:
For Each dr As DataRow In dt1.DataRows
Select Case style
Case "1","2" '外购+自产
If dr("子级编号") = father Then
lst ="子孙级物料" & dr("父级编号") & "的结构中含有当前父级,将会导致死循环,不能设置!"
Exit For
Else
lst = Functions.Execute("GetBOMSon",dr("子级编号"),dr("子级来源"),father)
End If
Case "3","4" '分拣+转换
If dr("父级编号") = father Then
lst ="子孙级物料" & dr("子级编号") & "的结构中含有当前父级,将会导致死循环,不能设置!"
Exit For
Else
lst = Functions.Execute("GetBOMSon",dr("父级编号"),dr("父级来源"),father)
End If
End Select
Next
实测发现,用exit for 无法实现需求,因为并不知道出现错误的时候已经遍历到第几层了,所以exit for 只是退出了一层的遍历,剩下的遍历还会继续。
请问应该怎么实现我的需求?