以文本方式查看主题

-  易表在线答疑  (http://www.egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://www.egrid2000.com/dvbbs/list.asp?boardid=2)
----  请教:计算刷新公式的问题  (http://www.egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=9992)

--  作者:liuliu
--  发布时间:2007/9/28 17:44:00
--  请教:计算刷新公式的问题
在"本年累计销量"字段中加入如下刷新公式:
SUMFOR("源数据","本月销量","分公司","=",[分公司],"品牌","=",[品牌],"年份","=",[年份],"月份"," <= ",[月份],1,rows)
由于有"18个单位*12个品牌*4年*12个月份"行,运行这个刷新公式时,需要4分钟左右的时间,我的一个表有20多个类似字段需要计算,计算时间非常长,有没有更好的办法解决计算时间长的问题!
--  作者:程兴刚
--  发布时间:2007/9/28 18:14:00
--  
1、将月份列设置为数值型(根据公式看应该是数值型),公式改为:

        SUMFOR("源数据","本月销量","分公司","=",[分公司],"品牌","=",[品牌],"月份"," <",[月份]+1,1,rows)  

       因为计算机数值加减运算速度快,而判断速度慢," <= " 改成" < ",将减少一个判断条件,也会提高速度!

2、数据量过大,建立各年度数据表,将数据按年度分别保存,表名称为:  年度+"源数据"  格式,再将公式改为:
     SUMFOR(text([年度])+"源数据","本月销量","分公司","=",[分公司],"品牌","=",[品牌],"月份"," < ",[月份]+1,1,rows)

     这样,只判断一次表名称,不用逐行判断年份,省去一个逐行判断环节!


--  作者:Czy
--  发布时间:2007/9/28 23:34:00
--  
先按条件进行汇总,然后用evalfor对指定列进行重算。
公式可以:if(Row=FirstRow,[本月销量],Cell(Row-1,"本月销量")+[本月销量])
估计用这种方式速度能有所改观。
--  作者:liuliu
--  发布时间:2007/9/29 9:59:00
--  
谢谢版主!
请教:有没有提取表名的函数,比如"2007源数据",我从此表中提取"2007"字符。

--  作者:Czy
--  发布时间:2007/9/29 10:36:00
--  
如果你所指的“2007源数据”表不是本表,估计不太容易实现。

--  作者:wjq1072
--  发布时间:2007/9/29 11:09:00
--  
不知道楼主提取后干什么用?
这样可以吗?

--  作者:wjq1072
--  发布时间:2007/9/29 11:11:00
--  
我的附件怎么传不上啊?

SetLabel("  ",Mid(ListGrids(),Search("2007",ListGrids()),4))

这是显示在窗口的标签。


--  作者:wjq1072
--  发布时间:2007/9/29 11:13:00
--  
今天论坛怎么啦?
1、附件不能上传;2、不能补充。
--  作者:liuliu
--  发布时间:2007/9/29 14:03:00
--  
有没有提取表名的函数,比如"2007源数据",
从本表中提取"2007"字符可以吗?
用途是提取2007字符,与年份变量比较,作为公式条件用
--  作者:Czy
--  发布时间:2007/9/29 14:13:00
--  
Left(GridName,4)