以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]文件突然打不开  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=15086)

--  作者:ayhwf
--  发布时间:2008/11/15 14:49:00
--  [求助]文件突然打不开
提示:
运行时错误:91
未设置对象变量或with block 变量
在文件预处理公式中设置了一个15个变量赋值的公式,还有二十个没有写上,是超限了?egd文件下载
--  作者:ylm
--  发布时间:2008/11/15 15:00:00
--  
可能是函数嵌套问题,将CELL(1,5,"初始数据")这些写入表达式变量试试。
--  作者:Czy
--  发布时间:2008/11/15 15:01:00
--  
函数嵌套。

SetVariable("%存款金额%",sumfor("每日收入","第六列","第二列", "=" ,[%时间变量%])

象这种公式不需多的,一个就可以使你你打不开文件。


--  作者:ayhwf
--  发布时间:2008/11/15 15:22:00
--  
老大那怎么解决?!函数套套是很实在的功能呀,怎么不解决好哩
--  作者:ylm
--  发布时间:2008/11/15 15:28:00
--  
函数嵌套问题
易表中很多函数是不能互相嵌套使用的,包括所有的表格函数、中文转换函数,个别字符函数和日期函数。
先看看这个例子:
CUnumber(Sumfor("订单明细","金额","订单号","= ",[订单]))
这个公式是不能得到任何结果的,因为CUnumber是不能和Sumfor嵌套的,那么怎样解决这个问题呢?有两个方法:

1、使用中转列
我们增加一个中转列,将其刷新公式设为:
Sumfor("订单明细","金额","订单号",= ,[订单]))
为了不影响使用,可以将这个中转列隐藏起来。
最后将原来的公式:
CUnumber(Sumfor("订单明细","金额","订单号","= ",[订单]))
改为:
CUnumber([中转列名称])

2、使用表达式变量
在“文件”菜单上,单击“变量设置”,增加一个变量,姑且命名为%金额%,将其类型设为表达式(切记),内容设为:
Sumfor("订单明细","金额","订单号",= ,[订单]))
最后将原来的公式:
CUnumber(Sumfor("订单明细","金额","订单号","=",[订单]))
改为:
CUnumber([%金额%])
从本例可以看出,表达式变量除了用来解决嵌套问题外,还可以用来简化表达式。

3、使用SetVariable函数
可以利用SetVariable函数将表达式的值保存在某个变量中,例如:
SetVariable("%A%",Sumfor("订单明细","金额","月份","=",1)) And AddRow(GridName,"月份,数量",1,[%A%])

4、那些函数不能互相嵌套
凡是不能互相嵌套的函数,本帮助文件均用红色星号标记出,例如下图中,Instr是不能嵌套的,但是Search和Substitute是可以嵌套的。

所谓不能嵌套,只是这类函数相互之间不能嵌套,但是这些不能互相嵌的套函数可以和其他函数互相嵌套,例如:
Round(Sumfor("订单明细","金额","订单号","= ",[订单]),2)
这个表达式完全可以得到正确的结果。

需要注意的是,第二种和第三种方法并不是总是可行的,所以如果其中一种方法不可靠,你可以尝试另一种方法。