以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  无法创建新的堆栈防护页面  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177491)

--  作者:edisontsui
--  发布时间:2022/5/24 17:20:00
--  无法创建新的堆栈防护页面
If e.DataCol.Name = "开料完成人" Then

    If e.newvalue = "" Then
        If e.DataRow("特殊产品").contains("锯切") OrElse e.DataRow("特殊生产").contains("锯切") Then
            e.DataRow("开料") = "未锯切"
            e.DataRow("开料日期") = Nothing
        Else
            e.DataRow("开料") = "未开料"
            e.DataRow("开料日期") = Nothing
        End If
    Else
        If e.DataRow("特殊产品").contains("锯切") OrElse e.DataRow("特殊生产").contains("锯切") Then
            e.DataRow("开料") = "已锯切"
            e.DataRow("开料日期") = Date.now
        Else
            e.DataRow("开料") = "已开料"
            e.DataRow("开料日期") = Date.now
        End If
    End If

    Dim n As Integer = CurrentTable.Rows.Count - 1
    For i As Integer = 0 To n
        Dim r As Row = CurrentTable.Rows(i)
        r("开料完成人") = e.DataRow("开料完成人")
    Next

end if

上面是 datacolchanged 里面的代码,如果筛选出的数据行数不多时,可以顺利执行;如果筛选出的数据行数比较多时,就会出现“无法创建新的堆栈防护页面”这个提示。估计是 Fox...Next 循环语句那里的问题。请问有什么办法改善一下吗?

--  作者:有点蓝
--  发布时间:2022/5/24 17:25:00
--  
Fox...Next 循环语句干嘛用的?
--  作者:edisontsui
--  发布时间:2022/5/24 20:10:00
--  
如果某行的"开料完成人"输入了数据,那么将当前显示出来的所有行之"开料完成人"里面都输入相同的数据。
--  作者:有点蓝
--  发布时间:2022/5/24 20:20:00
--  
        End If
    End If
if vars("a") = false
vars("a") = true
    Dim n As Integer = CurrentTable.Rows.Count - 1
    For i As Integer = 0 To n
        Dim r As Row = CurrentTable.Rows(i)
        r("开料完成人") = e.DataRow("开料完成人")
    Next
vars("a") = false
end if
end if

--  作者:edisontsui
--  发布时间:2022/5/26 19:53:00
--  
现在运行没问题了。请问三行 vars 语句在这里怎样理解呢?
--  作者:有点蓝
--  发布时间:2022/5/26 21:07:00
--  
控制不重复执行。也就是只有第一次触发的时候执行,循环里给"开料完成人"赋值的时候也会触发这个事件的,但是这时不会重复执行循环