以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 怎样退出递归函数? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=117850) |
-- 作者:huangxueyao -- 发布时间:2018/4/19 21:16:00 -- 怎样退出递归函数? 通过递归函数来遍历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 只是退出了一层的遍历,剩下的遍历还会继续。 请问应该怎么实现我的需求? |
-- 作者:有点甜 -- 发布时间:2018/4/19 21:23:00 -- 参考这个例子
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=114803&skin=0
|