以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 无法创建新的堆栈防护页面 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=162121) |
-- 作者:ycs5801 -- 发布时间:2021/4/6 15:57:00 -- 无法创建新的堆栈防护页面 单元格内输入数字后即跳出提示,软件自动关闭。 此主题相关图片如下:qq图片20210202161719.png |
-- 作者:有点蓝 -- 发布时间:2021/4/6 16:05:00 -- 表格事件代码计算,或者单元格表达式计算出现了死循环 |
-- 作者:ycs5801 -- 发布时间:2021/4/6 16:37:00 -- [此贴子已经被作者于2021/4/6 21:39:32编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/4/6 16:46:00 -- 这个控制太多了,自己检查吧,比如下面dctpc触发更改"dclcf","dclcf"的更改又触发"dcharbourdensity"的更改,一层一层,最后其它地方又导致dctpc触发,现成一个闭环,就是死循环了 Select Case e.DataCol.Name Case "dctpc","clcf" \'\'dclcf获取公式 If e.DataRow.IsNull("dctpc") And e.DataRow.IsNull("clcf") Then e.DataRow("dclcf") = Nothing Else e.DataRow("dclcf") = e.DataRow("dctpc")+e.DataRow("clcf") End If End Select Select Case e.DataCol.Name Case "dclcf","harbourdensity","tabledensity" \'\'dcharbourdensity获取公式 If e.DataRow.IsNull("dclcf") And e.DataRow.IsNull("harbourdensity") And e.DataRow.IsNull("tabledensity") Then e.DataRow("dcharbourdensity") = Nothing Else e.DataRow("dcharbourdensity") = e.DataRow("dclcf")*e.DataRow("harbourdensity")/e.DataRow("tabledensity") End If End Select |
-- 作者:ycs5801 -- 发布时间:2021/4/6 18:38:00 -- 但是实际当中确实是这个触发需求,请问怎么避免,或者采取什么方式完成? |
-- 作者:有点蓝 -- 发布时间:2021/4/6 20:32:00 -- 不要闭环,比如A触发B,B触发C,C又触发A,没完没了,肯定要有一个终结点。 找到合适的点,使用systemready:http://www.foxtable.com/webhelp/topics/2218.htm
|
-- 作者:ycs5801 -- 发布时间:2021/4/6 20:49:00 -- 但是无论你暂停了哪个点,会不会影响后续因值改变而引发的事件无法触发呢? |
-- 作者:有点蓝 -- 发布时间:2021/4/6 20:59:00 -- 肯定有一个无法触发。这个要您自己考虑了,重新理清一下业务逻辑,出现这种闭环的触发逻辑肯定是有问题的 |
-- 作者:ycs5801 -- 发布时间:2021/4/6 21:27:00 -- 好的老师。 |