以文本方式查看主题
- 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表,...多个列的关联引用,可能比代码计算还慢。
这情况建议从业务逻辑分析进行解耦,必要时增加(或减少)表格或者冗余的列等,避免过于复杂的关联计算
|