以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于代码运行速度的优化 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=134856) |
-- 作者:81538475 -- 发布时间:2019/5/10 15:32:00 -- [求助]关于代码运行速度的优化 当月人天改变时,去计算这个任务的剩余人天的代码。 因为可能涉及数据库的行,所以需要用到sql命令,没办法用表达式。下面黄色标注的时耗时比较多的代码。现在只有4行加起来差不多要等1-2秒。这样的体验感太差了。。 不知道有没有优化的方法,或者时其他思路。 e.DataRow.Save() Dim sy As Double = e.DataRow("任务人天")- sum [此贴子已经被作者于2019/5/10 15:32:56编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/5/10 16:15:00 -- 没办法
这句代码不能去掉的 DataTables("XMFP").SQLUpdate(drs)
重新加载代码,建议移除,重新load http://www.foxtable.com/webhelp/scr/2914.htm
|
-- 作者:81538475 -- 发布时间:2019/5/10 18:14:00 -- 那要选择刚加载进来的行,如何实现呢,只能通过for each 去找吗。 |
-- 作者:有点甜 -- 发布时间:2019/5/10 19:05:00 -- 以下是引用81538475在2019/5/10 18:14:00的发言:
那要选择刚加载进来的行,如何实现呢,只能通过for each 去找吗。
是的,没办法 |
-- 作者:81538475 -- 发布时间:2019/5/16 18:17:00 -- 想到了一个比较好的解决方案,分享一下。 未加载进来的数据使用SQLReplaceFor 直接写入数据库 Dim cnt As Integer = DataTables("XMFP").SQLReplaceFor("剩余人天",sy,"任务= \'" & rw & "\' and BH = \'" & BH & "\'",True) 然后内部已经加载的表格使用se\\ect 与数据库的数据同步,这样就不用把变动的行重新读取了。因为我这里重新读取涉及到很多事情,比如说要重新排序,要把这个重新读取的行挪到原来位置之类的事情。效率很低。 Dim rs As List(of DataRow)=DataTables("xmfp").Select("任务= \'" & rw & "\' and BH = \'" & BH & "\'") For Each r0 As DataRow In rs r0("剩余人天") = sy Next |