以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据量大时,表事件执行很慢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186871)

--  作者:drcqh
--  发布时间:2023/6/4 22:57:00
--  数据量大时,表事件执行很慢
项目中datacolchanged表事件代码如下:
Select Case e.DataCol.Name
    Case "数量"
           Dim t As Date = Date.Now
            For Each dr As DataRow In e.DataRow.GetChildRows("出库明细")
                dr("数量") = e.NewValue
            Next
            MessageBox.Show("用时:" & (date.Now-t).TotalSeconds)
end select
现在这个过程执行完成需要2分多钟,等待时间太长,有没有好的解决方法?

--  作者:有点蓝
--  发布时间:2023/6/4 23:07:00
--  
Select Case e.DataCol.Name
    Case "数量"
           Dim t As Date = Date.Now
datatablea("出库明细").replacefor("数量",e.NewValue,"关联列比如出库编号=\'" & e.DataRow("关联列比如出库编号") & "\'")
            MessageBox.Show("用时:" & (date.Now-t).TotalSeconds)
end select

--  作者:drcqh
--  发布时间:2023/6/4 23:16:00
--  
用replacefor也很慢的


--  作者:drcqh
--  发布时间:2023/6/4 23:21:00
--  
也快2分钟了。(datatable("出库明细")中还有个“数量”列的datacolchanged表事件)
[此贴子已经被作者于2023/6/4 23:36:23编辑过]

--  作者:有点蓝
--  发布时间:2023/6/5 8:27:00
--  
"出库明细"datacolchanged表事件发上来看看
--  作者:drcqh
--  发布时间:2023/6/5 15:52:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:screenshot20230605 (1).png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:screenshot20230605 (2).png
图片点击可在新窗口打开查看


[此贴子已经被作者于2023/6/5 15:55:23编辑过]

--  作者:有点蓝
--  发布时间:2023/6/5 16:00:00
--  
代码连环触发呀。。。。数量会更新领用总量,领用总量会触发更新金额,还会重置处方表金额列..........不知道还会不会触发其它的计算,这样明细表所有子行一系列计算下来,不慢才怪。
--  作者:drcqh
--  发布时间:2023/6/5 18:00:00
--  
看来这种情况用表达式列处理好些吧
--  作者:有点蓝
--  发布时间:2023/6/5 20:37:00
--  
表达式列如果也像这样,a表计算b表,b表计算c表,...多个列的关联引用,可能比代码计算还慢。

这情况建议从业务逻辑分析进行解耦,必要时增加(或减少)表格或者冗余的列等,避免过于复杂的关联计算