易表在线答疑技术与交流用户社区 → 我的这个系统太慢了,有没有办法解决这个问题?


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

主题:我的这个系统太慢了,有没有办法解决这个问题?

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


加好友 发短信
等级:超级版主 帖子:2320 积分:350 威望:0 精华:0 注册:2006/8/11 10:55:00
  发帖心情 Post By:2006/9/28 21:57:00 [只看该作者]

按下面办法来刷新数据:

提高统计速度
尽量避免重算全表

假定我们有一个仓管系统,该系统由三个表组成,分别为进仓、出仓、结存。
显然,对于每一种产品,总的进仓数量减去总的出仓数量,就是结存数量,所以“结存”表中数量列的刷新公式为:
Sumfor("进仓", "数量", "产品", "=", [产品]) - Sumfor("出仓","数量","产品","=",[产品])

以后我们需要得到最新结存数据的时候,只需重算“结存”表即可。但是如果有5000种产品,进出仓记录有上10万条,那么重算整个结存表可能需要数十分钟才能完成,很少有人能够忍受这种漫长的等待。

下面我们来改进一下这个系统:
1、在“进仓”表和“结存”表之间、“出仓”表和“结存”表之间通过“产品”列建立关联。
2、将“进仓”表数量列的操作公式设为:
if([结存!RelationRow]>0, RecalcRow("结存",[结存!RelationRow]),True)
3、将“出仓”表数量列的操作公式设为:
if([结存!RelationRow]>0, RecalcRow("结存",[结存!RelationRow]),True)

上述公式的含义是,一旦有进出仓,就立即重算“结存”表中对应的行。这样我们在某产品有进出仓的时候,即时计算出了该产品的结存,整个结存表的数据随时都是最新的,无须在需要最新结存数据的时候去花费几十分钟重算整个结存表,效率大为提高。


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


加好友 发短信
等级:论坛游民 帖子:132 积分:0 威望:0 精华:0 注册:2006/8/12 11:00:00
  发帖心情 Post By:2006/9/28 22:31:00 [只看该作者]

谢谢老师!我试试看,同时我发现速度慢最主要的还是我没有注册,今天我办公室的那台电脑我注册后运行该系统速度每那么慢了,相信通过重新修改公式速度问题一定能解决的。另外,请老师帮我看看这个表,我把数据合并到这个系统后收视费从和费用缴至两栏公式不知为何不会正常运行?egd文件下载

 回到顶部
总数 12 上一页 1 2