Foxtable(狐表)用户栏目专家坐堂 → BOM嵌套检查的内部函数死循环。


  共有9766人关注过本帖树形打印复制链接

主题:BOM嵌套检查的内部函数死循环。

帅哥哟,离线,有人找我吗?
Bin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 10:22:00 [显示全部帖子]

   If pc = fpc Then  你这个条件永远不成立那就永远执行下去啊.

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 10:32:00 [显示全部帖子]

Dim pc As String = args(0)  '这里这两个值不就是上次传进来的这两个值吗?
Dim fpc As String = args(1)
Dim dt As DataTable = args(2)
Dim tbl As Table = args(3)
Dim drs As List(of DataRow)
drs = dt.Select("键 = '" & fpc & "'")
If drs.count > 0 Then
    For Each dr As DataRow In drs
        fpc = dr("父键")
        If pc = fpc Then  '你每次都把上次传入的两个值进行比较. 那么一旦这两个值不一样的话,那么不就永远执行ESLE死循环了吗?
            '新增嵌套或父子相同的键
            Dim dr1 As DataRow = tbl.DataTable.addnew()
            dr1("_Identify") = dr("_Identify")
            dr1("键") = dr("键")
            dr1("标题") = dr("标题")
            dr1("父键") = dr("父键")
        Else
            Functions.Execute("findfather",pc,fpc,dt,tbl) '然后又把这两个值传进去
        End If
    Next
End If

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 14:24:00 [显示全部帖子]

你怎么不是死循环呢.  举个例子 键为FPC的行有10个. 你循环第一次.取第一行的父键和PC做对比.不等于  又执行这个函数.

那么你进来了.依然是  循环键为FPC的行, 那么依然是有10个 那么 循环第一次.取第一行的父键和PC做对比.不等于  又执行这个函数.  死循环

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 15:34:00 [显示全部帖子]

   If pc = fpc Then 问题你的条件判断呀. 

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 15:35:00 [显示全部帖子]

你自己写的代码你自己最清楚,一开始我看过去都看错了. 

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 17:29:00 [显示全部帖子]

.
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130708172106.png
图片点击可在新窗口打开查看

根据你的数据表

父键8 找到 键=8的行获得父键为4  进入下一个  父键为4 找到键=4 的行 获得父键为1  进入下一个 父键为1 找到键=1的行 获得父键为8 进入下一行

此时进入死循环

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 17:40:00 [显示全部帖子]

看我15楼已经给你解释了死循环的地方了.

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/8 17:47:00 [显示全部帖子]

你不更改或或者退出 当然会一直递归下去啊.

 回到顶部