以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何优化代码提高运行及保存速度?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130099)

--  作者:ltty5200
--  发布时间:2019/1/13 13:45:00
--  [求助]如何优化代码提高运行及保存速度?
我的项目中有这么一个情况,表B中有一列数据,每填入一个数据,都会复制到表A,并把这个数据均分到表A中的12个列中,表A的这12个列里面,每有一个数据变动都会引起同一列其他数据的变化。

部分代码如下:
If e.DataCol.Name ="整体计划合计_金额" Then
Dim dr As DataRow = e.DataRow
Dim jfe As Single = dr("整体计划合计_金额")/12
 dr("一月_金额")= jfe
                dr("二月_金额")= jfe
                dr("三月_金额")= jfe
                dr("四月_金额")= jfe
               dr("五月_金额")= jfe
               dr("六月_金额")= jfe
                dr("七月_金额")= jfe
                dr("八月_金额")= jfe
                dr("九月_金额")= jfe
                dr("十月_金额")= jfe
               dr("十一月_金额")= jfe
                dr("十二月_金额")= jfe
End If

If e.DataCol.Name = "一月_金额" Then
\'\'\'\'\'\'\'很多代码‘’‘’
end if

If e.DataCol.Name = "二月_金额" Then
\'\'\'\'\'\'\'很多代码‘’‘’
end if

If e.DataCol.Name = "三月_金额" Then
\'\'\'\'\'\'\'很多代码‘’‘’
end if

If e.DataCol.Name = "四月_金额" Then
\'\'\'\'\'\'\'很多代码‘’‘’
end if
......................


原因为整体计划合计会均分到12个月数据里,这12个月里的数据变动又要引起很多运算量。
目前的状况是整体计划合计只要一动一个数据就要卡5分钟左右,请问如何优化?

--  作者:y2287958
--  发布时间:2019/1/13 16:38:00
--  
涉及这么多计算,慢是必然的,上实例让大家瞧瞧能否调整一下方法。
--  作者:ltty5200
--  发布时间:2019/1/13 18:30:00
--  [求助]如何优化代码提高运行及保存速度?
如我的项目,2019年年度报表里,"损益计划表"中,"今年计划_额" 和 "今年计划_率",输入数据后,会自动引用到"月度计划表"的"整体计划合计_金额"和"整体计划合计_率" 中,并把这个数据数据自动除以12,然后填入"月度计划表"中的“一月计划_金额”、“二月计划_金额”、......一直到“十二月计划_金额”。

并且,这十二列的数据,每一列数据变化都会引起数据变化。

现在是只要在"损益计划表"中,"今年计划_额"里填入一个数据,项目就要卡半天,请问如何优化代码让运行速度加快?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.zip

[此贴子已经被作者于2019/1/13 18:34:29编辑过]

--  作者:有点甜
--  发布时间:2019/1/13 21:15:00
--  

代码改成

 

SystemReady = False

 

\'本来的代码

 

SystemReady = True


--  作者:ltty5200
--  发布时间:2019/1/14 8:31:00
--  
甜老师,请教一下,在哪个位置添加?每个月的列的代码里添加还是引用损益计划表的今年金额里添加?还有添加这个会不会引起代码不执行?
[此贴子已经被作者于2019/1/14 8:31:43编辑过]

--  作者:有点甜
--  发布时间:2019/1/14 8:55:00
--  

datacolchanged事件。你操作哪个表,就添加到哪个表里面去。