以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  运行速度太慢了,求代码简化和提速方案  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54845)

--  作者:SZDVYE
--  发布时间:2014/8/6 1:45:00
--  运行速度太慢了,求代码简化和提速方案
各位前辈老师,小弟制作了一个操作系统,但是操作起来的速度太慢了,例如,读取10天的数据速度尚可,超过了,速度就慢得要死.
本人是菜鸟级,也知道系统是有些烂,还望各位前辈老师耐心指导.
运行环境:局域网
运行问题:调阅资料和编辑资料运行速度实在太慢,求代码简化.
密码:888

--  作者:Bin
--  发布时间:2014/8/6 8:33:00
--  
东西呢?
--  作者:SZDVYE
--  发布时间:2014/8/6 22:07:00
--  

上传时文件太大没有成功,现在整理后重传了,谢谢
[此贴子已经被作者于2014-8-7 17:52:34编辑过]

--  作者:有点甜
--  发布时间:2014/8/6 22:25:00
--  

 项目很大,哪个表,哪个窗口,哪个按钮的操作慢?

 

 别人不可能帮你看完整个项目啊。


--  作者:SZDVYE
--  发布时间:2014/8/6 23:17:00
--  
谢谢l老师的意见,情况是这样的:
主表:报关登记表(关联表:报关结算表)
菜单:业务管理,将需要的日期填入"开始"按钮和"结束"按钮,选择"加载"
选择日期间隔长,例如1个月的数据,系统就会变得很慢.




--  作者:菲舍尔
--  发布时间:2014/8/6 23:57:00
--  

加载的数据越多,加载的速度就越慢,这个是肯定的

 


--  作者:lsy
--  发布时间:2014/8/7 7:49:00
--  

第一,列太多,能不能分拆成几个小表。

第二,DrawCell事件中,好多单元格都要重绘,能不能减少。

第三,一次加载很多行,有没有必要。

第四,多线程加载。加载过程中,不影响干其他事,就不觉得慢了。


--  作者:有点甜
--  发布时间:2014/8/7 9:32:00
--  

 看了一下,如果是加载慢的话,有几种原因。

 

1、其它事件影响了,你要改一下代码

 

Dim StartDate As Date
Dim EndDate As Date
With RibbonTabs("业务管理")("报关登记查询")("时间筛选")
    StartDate = .Items("StartDate").Value
End With
With RibbonTabs("业务管理")("报关登记查询")
    EndDate = .Items("EndDate").Value
End With
SystemReady = False
DataTables("报关登记表").StopRedraw
DataTables("报关结算表").StopRedraw

DataTables("报关登记表").LoadFilter = "[日期] >= #" & StartDate & "# And [日期] <= #" & EndDate & "#"
DataTables("报关登记表").Load()

DataTables("报关结算表").LoadFilter = "[日期] >= #" & StartDate & "# And [日期] <= #" & EndDate & "#"
DataTables("报关结算表").Load()

DataTables("报关结算表").ResumeRedraw
DataTables("报关登记表").ResumeRedraw
SystemReady = True

 

2、表达式列过多,如果加载量过多的话,重新计算也是很耗时的。建议尽量不要用表达式列了,你看看是否可以用数据列代替表达式列的功能。


--  作者:有点甜
--  发布时间:2014/8/7 9:35:00
--  
 再有一个,你的数据较多,你要在access里面给日期列添加一个索引,这样利于查询和比较,不然会很慢的。
--  作者:SZDVYE
--  发布时间:2014/8/7 14:52:00
--  
谢谢各位老师给予的指导:
我的不明白地方如下:

第一,列太多,能不能分拆成几个小表。  

          拆分几个小表,还是存在父表和子表加载问题,加载的数据量应该是一样的,耗时会少吗?  

第二,DrawCell事件中,好多单元格都要重绘,能不能减少。

     嗯,功能教学中有说过这个问题,但是这个是提示需要,我希望系统能自动排除问题数据并提示.所以少不了

第三,一次加载很多行,有没有必要。

     最起码我觉得2个月的数据是需要的,因为整理数据是以月为单位,并且经常要对比上一个月的数据,也就是约1400行的数据     

第四,多线程加载。加载过程中,不影响干其他事,就不觉得慢了。

  请教老师,什么叫多线程加载,能告诉我操作方法吗?



2、表达式列过多,如果加载量过多的话,重新计算也是很耗时的。建议尽量不要用表达式列了,你看看是否可以用数据列代替表达式列的功能。

     嗯,明白.


3.  再有一个,你的数据较多,你要在access里面给日期列添加一个索引,这样利于查询和比较,不然会很慢的。

    老师,能给我建立索引的操作方法吗?



[此贴子已经被作者于2014-8-7 14:54:00编辑过]