易表在线答疑技术与交流用户社区 → [求助]relationrow是何函数


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

主题:[求助]relationrow是何函数

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


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2007/9/24 22:32:00 [显示全部帖子]

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

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

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

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

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

避免重算操作公式

除非确有必要,否则重算表、行、列的时候,应该仅仅重算刷新公式,而避免重算操作公式。几乎所有的重算函数,包括RecalcGrid、RecalcRow、RecalcRGrid、RecalcCol都有一个可选参数,该参数如果设为1,将忽略操作公式。


 回到顶部