Foxtable(狐表)用户栏目专家坐堂 → 数据量大时,表事件执行很慢


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

主题:数据量大时,表事件执行很慢

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


加好友 发短信
等级:小狐 帖子:326 积分:3723 威望:0 精华:0 注册:2013/1/7 17:39:00
数据量大时,表事件执行很慢  发帖心情 Post By: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分多钟,等待时间太长,有没有好的解决方法?

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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:326 积分:3723 威望:0 精华:0 注册:2013/1/7 17:39:00
  发帖心情 Post By:2023/6/4 23:16:00 [只看该作者]

用replacefor也很慢的


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


加好友 发短信
等级:小狐 帖子:326 积分:3723 威望:0 精华:0 注册:2013/1/7 17:39:00
  发帖心情 Post By:2023/6/4 23:21:00 [只看该作者]

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

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


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

"出库明细"datacolchanged表事件发上来看看

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


加好友 发短信
等级:小狐 帖子:326 积分:3723 威望:0 精华:0 注册:2013/1/7 17:39:00
  发帖心情 Post By:2023/6/5 15:52:00 [只看该作者]


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

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


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

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


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

代码连环触发呀。。。。数量会更新领用总量,领用总量会触发更新金额,还会重置处方表金额列..........不知道还会不会触发其它的计算,这样明细表所有子行一系列计算下来,不慢才怪。

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


加好友 发短信
等级:小狐 帖子:326 积分:3723 威望:0 精华:0 注册:2013/1/7 17:39:00
  发帖心情 Post By:2023/6/5 18:00:00 [只看该作者]

看来这种情况用表达式列处理好些吧

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


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

表达式列如果也像这样,a表计算b表,b表计算c表,...多个列的关联引用,可能比代码计算还慢。

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

 回到顶部