Foxtable(狐表)用户栏目专家坐堂 → 求助:是否发生了死循环


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

主题:求助:是否发生了死循环

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
求助:是否发生了死循环  发帖心情 Post By:2015/4/29 15:41:00 [只看该作者]

If e.DataCol.name = "材料编号" OrElse e.DataCol.name = "定额用量" OrElse e.DataCol.name = "配合量" OrElse e.DataCol.name = "市场价" Then
    If dr1("材料编号") IsNot Nothing Then
        Dim dr2 As DataRow = DataTables("材料库").Find("[材料编号] = '" & dr1("材料编号") & "'")
        If dr2("材料编号") IsNot Nothing Then
            dr1("材料名称") = dr2("材料名称")
            dr1("单位") = dr2("单位")
            dr1("单价") = dr2("单价")
            dr1("主材") = dr2("主材")
            dr1("RCJ") = dr2("RCJ")
            dr1("砼") = dr2("砼")
            If pr("人工") > 0 And dr1("单位") = "工日" Then ''计算工日市场价
                dr1("市场价") =  dr1("单价") * pr("人工")
            End If
            ''If dr2("市场价") IsNot Nothing Then
                ''dr1("市场价") = dr2("市场价")
            ''End If

..........

           End If
     End If
End If


加入红色代码,执行完   dr1("砼") = dr2("砼")  程序没有错误提示,自动关闭。

红色代码应该怎样修改?

谢谢!

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/29 15:44:00 [只看该作者]

是的. 你判断市场价改变后触发变动,改变市场价,又为它赋值. 无限死循环啊.  你思路就有问题.

你的目的是实现什么效果?

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2015/4/29 15:48:00 [只看该作者]

材料库中有 一部分有 市场价

1、有市场价的填入材料库中的市场价

2、没有市场价的 为空值

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/29 15:49:00 [只看该作者]

If e.DataCol.name = "材料编号" OrElse e.DataCol.name = "定额用量" OrElse e.DataCol.name = "配合量" OrElse e.DataCol.name = "市场价" Then


根据你描述的需求. IF条件里无需加入这个判断啊.这样更改市场价级丕会触发里面的代码,就不会死循环了

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2015/4/29 15:55:00 [只看该作者]

2个如果换一下位置,可以计算了

但太慢了

请教,应该怎样修改?


[此贴子已经被作者于2015/4/29 15:58:32编辑过]

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2015/4/29 16:04:00 [只看该作者]

不加入红色代码 ,计算完1项 用时 14秒

加入红色代码 ,计算完1项 用时 24秒,

请教,Bin 版主,这个代码应该怎样修改呢?

谢谢!


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/29 16:05:00 [只看该作者]

只是FIND一行数据而已,不至于要14秒吧.上个例子看看

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


加好友 发短信
等级:小狐 帖子:353 积分:3058 威望:0 精华:0 注册:2008/9/1 6:39:00
  发帖心情 Post By:2015/4/29 16:10:00 [只看该作者]

是昨天的那一项,计算出各种取费了。

一条 If dr2("市场价") IsNot Nothing Then
                dr1("市场价") = dr2("市场价")
           End If


就多了10秒多,不理解


[此贴子已经被作者于2015/4/29 16:14:06编辑过]

 回到顶部