以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按钮的click事件,将A表的行的某些字段,复制到B表。运行慢(要等甚至1分钟多,窗口才会关闭),该怎么优化啊?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116076)

--  作者:guosheng
--  发布时间:2018/3/19 16:26:00
--  按钮的click事件,将A表的行的某些字段,复制到B表。运行慢(要等甚至1分钟多,窗口才会关闭),该怎么优化啊?
……
e.Form.Controls("确定").enabled=False
e.Form.Controls("取消").enabled=False

Dim n As Integer=Tables("工程相关合同定标情况表").current("标段数量")
For i As Integer=0 To n-1
Tables("合同基本信息表").addnew()
Tables("合同基本信息表").current("公司名称")=Tables("工程相关合同定标情况表").current("公司名称")
Tables("合同基本信息表").current("地块")=Tables("工程相关合同定标情况表").current("地块")
Tables("合同基本信息表").current("一级费项名称")=Tables("工程相关合同定标情况表").current("一级费项名称")
Tables("合同基本信息表").current("二级费项名称")=Tables("工程相关合同定标情况表").current("二级费项名称")
Tables("合同基本信息表").current("三级费项名称")=Tables("工程相关合同定标情况表").current("三级费项名称")
Tables("合同基本信息表").current("合同名称")=Tables("工程相关合同定标情况表").current("合同名称")
Tables("合同基本信息表").current("承办部门")=Tables("工程相关合同定标情况表").current("承办部门")
Tables("合同基本信息表").current("是否属于专业暂估")=Tables("工程相关合同定标情况表").current("是否属于专业暂估")
Tables("合同基本信息表").current("是否为工程合同")=Tables("工程相关合同定标情况表").current("是否为工程合同")
Tables("合同基本信息表").current("是否计入其他产值")=Tables("工程相关合同定标情况表").current("是否计入其他产值")
Tables("合同基本信息表").current("合同确定方式")=Tables("工程相关合同定标情况表").current("合同确定方式")
Next
Tables("合同基本信息表").save

e.Form.Controls("确定").enabled=True
e.Form.Controls("取消").enabled=True

forms("增加一条开标评标信息").close()
End If
[此贴子已经被作者于2018/3/19 16:26:10编辑过]

--  作者:有点甜
--  发布时间:2018/3/19 16:48:00
--  

试试改成这样

 

Dim n As Integer=Tables("工程相关合同定标情况表").current("标段数量")
Dim cr As Row = Tables("工程相关合同定标情况表").current
Tables("合同基本信息表").StopRedraw
systemready = False
For i As Integer=0 To n-1
    Dim nr = Tables("合同基本信息表").addnew()
    nr("公司名称")=cr("公司名称")
    nr("地块")=cr("地块")
    nr("一级费项名称")=cr("一级费项名称")
    nr("二级费项名称")=cr("二级费项名称")
    nr("三级费项名称")=cr("三级费项名称")
    nr("合同名称")=cr("合同名称")
    nr("承办部门")=cr("承办部门")
    nr("是否属于专业暂估")=cr("是否属于专业暂估")
    nr("是否为工程合同")=cr("是否为工程合同")
    nr("是否计入其他产值")=cr("是否计入其他产值")
    nr("合同确定方式")=cr("合同确定方式")
Next
systemready = true
Tables("合同基本信息表").ResumeRedraw
\'Tables("合同基本信息表").save


--  作者:guosheng
--  发布时间:2018/3/19 17:17:00
--  
更改后,窗口确实瞬间,关闭。这么优化,是什么原因呢?
--  作者:有点甜
--  发布时间:2018/3/19 17:51:00
--  

看红色代码

 

Dim n As Integer=Tables("工程相关合同定标情况表").current("标段数量")
Dim cr As Row = Tables("工程相关合同定标情况表").current
Tables("合同基本信息表").StopRedraw    \'停止表格刷新
systemready = False      \'停止执行额外代码,你有可能赋值的时候,datacolchanged触发,耗时

For i As Integer=0 To n-1
    Dim nr = Tables("合同基本信息表").addnew()
    nr("公司名称")=cr("公司名称")
    nr("地块")=cr("地块")
    nr("一级费项名称")=cr("一级费项名称")
    nr("二级费项名称")=cr("二级费项名称")
    nr("三级费项名称")=cr("三级费项名称")
    nr("合同名称")=cr("合同名称")
    nr("承办部门")=cr("承办部门")
    nr("是否属于专业暂估")=cr("是否属于专业暂估")
    nr("是否为工程合同")=cr("是否为工程合同")
    nr("是否计入其他产值")=cr("是否计入其他产值")
    nr("合同确定方式")=cr("合同确定方式")
Next
systemready = true \'恢复
Tables("合同基本信息表").ResumeRedraw  \'恢复

\'Tables("合同基本信息表").save   \'暂时不保存