易表在线答疑技术与交流用户社区 → 这个两个函数可以嵌套么Move findrow


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

主题:这个两个函数可以嵌套么Move findrow

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


加好友 发短信
等级:论坛游侠 帖子:238 积分:882 威望:0 精华:0 注册:2012/4/11 10:40:00
这个两个函数可以嵌套么Move findrow  发帖心情 Post By:2012/6/3 15:57:00 [只看该作者]

move(FindRow("表1","列1","=","内容"),1)

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


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2012/6/3 16:20:00 [只看该作者]

不能!

1、用Eval解决:
Eval("move("+Text(FindRow("表1","列1","=","内容"))+",1)")

2、用表达式变量解决:
[%A%]=FindRow("表1","列1","=","内容")
Eval("move("+Text([%A%])+",1)")


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


加好友 发短信
等级:论坛游侠 帖子:238 积分:882 威望:0 精华:0 注册:2012/4/11 10:40:00
  发帖心情 Post By:2012/6/4 20:59:00 [只看该作者]

为什么不能直接嵌套 而要用eval 一直没明白原因。


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


加好友 发短信
等级:超级版主 帖子:5115 积分:862 威望:0 精华:0 注册:2006/8/15 16:57:00
  发帖心情 Post By:2012/6/5 8:56:00 [只看该作者]

易表帮助文件中对嵌套问题有专门的章节“函数嵌套问题”作说明,你可以看看。


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


加好友 发短信
等级:论坛游侠 帖子:238 积分:882 威望:0 精华:0 注册:2012/4/11 10:40:00
  发帖心情 Post By:2012/6/9 19:35: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)
这个表达式完全可以得到正确的结果。

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


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


加好友 发短信
等级:论坛游侠 帖子:238 积分:882 威望:0 精华:0 注册:2012/4/11 10:40:00
  发帖心情 Post By:2012/6/9 19:37:00 [只看该作者]

帮助文件并没有提到解决嵌套问题 eval方法


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


加好友 发短信
等级:论坛游侠 帖子:238 积分:882 威望:0 精华:0 注册:2012/4/11 10:40:00
  发帖心情 Post By:2012/6/9 19:42:00 [只看该作者]

Eval

Eval可以对指定的表达式求值,例如Eval(1+1)=2 ,而Eval("[数量] * [单价]")可以求出金额。
熟练掌握Eval函数,可以大幅度提高系统设计的灵活性,因为Eval函数可以在运行过程中动态生成表达式,然后再求得这个表达式的值。
Eval也可以动态执行一些命令,加入你要用一个变量保存用户选择的表名,然后打开这个表,公式为:
Eval("OpenGrid([%A%])")

如果要执行或求值的表达式中含有双引号,那么用两个双引号表示一个,具体写法可以参考SetColFormula函数

 


 回到顶部