Foxtable(狐表)用户栏目专家坐堂 → 有谁能做个字段间的计算关系由用户自定义公式的例子?


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

主题:有谁能做个字段间的计算关系由用户自定义公式的例子?

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


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/4/1 10:09:00 [只看该作者]

以下是引用ybtxdz在2009-4-1 6:03:00的发言:


其实用狐表解决这个问题这不难。要说难,可能难在如何根据您自己的实际情况规范您实际的公式。

规范的公式设计,能给编程解析公式带来便宜。

下面仅就您提出的“应发工资=基本工资+提成+补助+奖金+加班费”公式粗略的做了一例程,编写了一个自定义函数对公式进行解析,然后在DatacloChanged事件加以运用即成,望能对您有所帮助和启发。


 下载信息  [文件大小:284.0 KB  下载次数:8]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

很好的解决方案,建议加精!


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/1 10:12:00 [只看该作者]

以下是引用狐狸爸爸在2009-4-1 9:50:00的发言:
经过测试,eval不支持iif的

如果这样,用自定义函数倒是一个很好的思路.
但我还是不太清楚复杂的公式如何解析,目前上面几个例子都是很简单的公式,只有一种运算符号,这样的公式解析太简单了,不具有实用价值.我还是希望谁能做一个复杂公式的解析事例(有各种运算符号和IIF函数),学习一下!


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


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/4/1 10:18:00 [只看该作者]

如果用Eval定义并执行函数,要等下次更新。
但是Eval不是唯一的选择,可以看看帮助文件“开发篇 - foxtable编程 - 自定义函数 - 动态函数管理”。


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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/1 11:43:00 [只看该作者]

以下是引用狐狸爸爸在2009-4-1 10:18:00的发言:

如果用Eval定义并执行函数,要等下次更新。
但是Eval不是唯一的选择,可以看看帮助文件“开发篇 - foxtable编程 - 自定义函数 - 动态函数管理”。

     经过测试,好像Eval 函数的表达式参数既不支持iff 函数,也不支持逻辑表达式.即:既不能用Eval(iff(),……)的形式,也不能用Eval([级别]="初级",……)的形式计算表达式的逻辑值。
   如果这样,就给公式的解析带来很大的困难。贺老师说下次更新Eval可以定义并执行函数,那想问一下,下次更新Eval是否可以支持iff函数?(注意IFF的条件中可能引用字段名,否则就没有多大意义)
    另外,贺老师说让我认真看一下动态函数管理,我认真看了,但利用自定义函数我还是没有看出如何解析一个逻辑表达多的值(即已知一个字符串,它的内容是一个逻辑表达式,怎样解析它的值是True还是 false),请贺老师指导!

[此贴子已经被作者于2009-4-1 11:44:48编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2009/4/1 12:14:00 [只看该作者]


1、不仅是eval,就是VB,也不支持iff
2、目前eval()真正执行的应该是符合四则混合运算规则的字符串,里面不应该有等号。

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/1 12:18:00 [只看该作者]

以下是引用程兴刚在2009-4-1 12:14:00的发言:

1、不仅是eval,就是VB,也不支持iff
2、目前eval()真正执行的应该是符合四则混合运算规则的字符串,里面不应该有等号。

   如果这样,公式解析时就只能包括加减乘除,不能包含关系运算和IFF函数了?在很多时候,这样的公式解析是没有办法使用的!根本解决不了实际问题。还是希望贺老师能想一个解决的办法。


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2009/4/1 12:37:00 [只看该作者]

1、我是说根本没有iff,而是iif您这样测试就是支持也检测不出来。
2、还是认为您下定义太早,这样不比您要求的iif强N倍?开下面的代码:


dim r as Integer Tables("表名").Current
dim a as Integer
if r.("数量") < 1000
   a = 1
else
   if r.("数量") < 2000
      a = 0.9
   else
      if r.("数量") < 3000
         a = 0.8
      else
       ..............
      end if
    end if
end if
r("折扣") = a
r("金额") = Eval(Math.Round(r("数量") & "*" & r("单价") & "*" & r("折扣"),3),r)


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2009/4/1 12:41:00 [只看该作者]

狐表的代码加以灵活运用要靠我们自己,不能单单给贺老师加码呀,要把他逼疯了,我还想继续使用狐表呢!图片点击可在新窗口打开查看

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2009/4/1 12:48:00 [只看该作者]

以下是引用cpayinyuan在2009-4-1 12:18:00的发言:

   如果这样,公式解析时就只能包括加减乘除,不能包含关系运算和IFF函数了?在很多时候,这样的公式解析是没有办法使用的!根本解决不了实际问题。还是希望贺老师能想一个解决的办法。




 我不明白,为什么要能执行等号才能解决根本问题,我向您也不应该执行这样的比如:Eval("(1+2)*8/2 =5",..........)

逻辑表达式应该直接是 if Eval("(1+2)*8/2 ",..........) = 12 '
                                    true
                              else
                                    false
                              end if

       我想不明白!

[此贴子已经被作者于2009-4-1 12:52:46编辑过]

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


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/1 12:54:00 [只看该作者]

以下是引用程兴刚在2009-4-1 12:37:00的发言:

1、我是说根本没有iff,而是iif您这样测试就是支持也检测不出来。
2、还是认为您下定义太早,这样不比您要求的iif强N倍?开下面的代码:

  iff 的事实在惭愧,这次太粗心了,多谢批评!
  您的事例我看了,还是那句话,如果是确定的公式,用if语句代替iif当然可以。但是,在通用的工资软件中,公式是最终用户自定义的,最终用户自定义的公式一般要支持iif函数,如果Eval不支持iif,那系统怎样解析这样的公式呢?
   如果这样,我们只能要求最终用户自定义公式的时候,也不要使用 iif函数,而是编写一长串的若干行代码,恐怕不太现实吧?一般的通用工资软件都是支持自定义公式的,而且自定义公式中也支持IIf函数,您可以下载一个用友工资的试用版看一下是否这样。我不是非要给贺老师加码,而是如果常用的功能在狐表中不支持,让我们怎么用?我也是为了让狐表能够更好的发扬光大!

[此贴子已经被作者于2009-4-1 12:56:13编辑过]

 回到顶部
总数 67 上一页 1 2 3 4 5 6 7 下一页