Foxtable(狐表)用户栏目专家坐堂 → 无法创建新的堆栈防护页面


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

主题:无法创建新的堆栈防护页面

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
无法创建新的堆栈防护页面  发帖心情 Post By:2023/5/8 11:56:00 [只看该作者]

出入库 datacolchanged 代码:
If e.DataCol.name = "余数" Then
    e.DataRow.save '必须先保存,后面SQL才能统计到此数据的变化
    Dim max As Integer = DataTables("出入库").Compute("Max(_Identify)", "物料编号 = '" & e.DataRow("物料编号") & "'") '取得同物料的最大识别号
    If e.DataRow("_Identify") = max Then
        If user.Group = "仓库" OrElse user.Group = "组装仓库" OrElse user.Group = "仓库(铝巴)" OrElse user.Group = "品质" OrElse user.Group = "品质工程师" OrElse user.name = "开发者"Then 
            DataTables("物料字典").DataCols("物料编号").RaiseDataColChanged("物料编号 = '" & e.DataRow("物料编号") & "'")
        End If
    End If
End If

物料字典 datacolchanged 代码:
If e.DataCol.Name = "物料编号" Then
If e.NewValue IsNot Nothing Then
    Dim dr1 As DataRow = DataTables("出入库").SQLFind("物料编号 = '" & e.DataRow("物料编号") & "'", "_Sortkey Desc")
    If dr1 IsNot Nothing Then
        e.DataRow("最后余数1") = dr1("余数") 
    End If 
    Dim dr As DataRow = DataTables("出入库2").SQLFind("物料编号 = '" & e.DataRow("物料编号") & "'", "_Sortkey Desc")
    If dr IsNot Nothing Then
        e.DataRow("最后余数2") = dr("余数") 
    End If
end if
end if

上面 出入库 代码执行时,会触发 物料字典 发生|“无法创建新的堆栈防护页面” 提示。请问要怎样修改代码好呢?谢谢。

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/8 12:11:00 [只看该作者]

事件执行死循环了。2个表的datacolchanged 事件代码全部发上来看看

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2023/5/8 12:48:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:临时代码3.rar

请看附页代码。

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/8 13:42:00 [只看该作者]

嗷,这么多代码,我就没法看了。自己调试吧,就是找:列A触发更改列B,列B触发后又更改列C,列C触发又更改列A,...如此不断循环的调用。这个循环可能是跨表的触发。

考虑把代码全部注释掉,然后一段段启用,看是哪些代码会有影响。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2023/5/8 15:30:00 [只看该作者]

我确定是1楼的两段代码死循环了,就是不知道从哪里改起。

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/8 15:38:00 [只看该作者]

肯定不止1楼的的代码,只能说是1楼的代码又导致了其它代码的触发。

这个东西只能自己一个一个去追溯了,比如上面1楼代码更改了"最后余数1"的数据,然后在去看看什么地方会有下面这种根据"最后余数1"触发其它处理的代码,其它处理又触发了其它的列......

If e.DataCol.Name = "最后余数1" Then
或者
case  "最后余数1"

 回到顶部