以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  修改自定义函数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87701)

--  作者:lur320
--  发布时间:2016/7/17 17:15:00
--  修改自定义函数
目的还是为了在发布后让用户可以自己修改一些简单的计算代码。

我目前将会用到的一些计算代码按照1234顺序编了进内部函数里面。

Dim q1,q2,q3,q4,q5,q6,wt,siz,cost As Single
Dim ex As String
ex=args(0)   ‘ex是计算方法的编号,不同表格里面的ex数字代表不同的计算方法。
q1=args(1)
q2=args(2)
q3=args(3)
q4=args(4)
q5=args(5)
q6=args(6)
wt=args(7)
siz=args(8)

If ex=1 Then  
    cost = math.Max(q1 * wt,q2 * siz) + q3 + IIF(wt < 3,q4,q5)
    
ElseIf ex=2 Then
    If wt<= 3000 Then
        cost=q1
    ElseIf wt>3000 And wt<=5000 Then
        cost=q2
。。。。


问问有没有什么办法可以在后期修改这些计算方法?
例如新增一个ex=6


--  作者:Hyphen
--  发布时间:2016/7/18 8:47:00
--  
不要传入单个的参数,改成传入数组、集合或字典的参数,如

Dim lst As new List(of object)

Functions.Execute("函数名",lst)

--  作者:lur320
--  发布时间:2016/7/18 10:06:00
--  

不是这个意思

ex=args(0)   ‘ex是计算方法的编号,不同表格里面的ex数字代表不同的计算方法。
q1=args(1)   ‘ 所有计算方法都会用到q1~q6和wt,siz
q2=args(2)
q3=args(3)
q4=args(4)
q5=args(5)
q6=args(6)
wt=args(7)
siz=args(8)
 
按照不同的ex编号,就有不同的计算方法。
我目前编辑了4个ex,如:
If ex=1 Then  
    cost = math.Max(q1 * wt,q2 * siz) + q3 + IIF(wt < 3,q4,q5)
    
ElseIf ex=2 Then
 
如果将来要新增一个ex=5,怎么在项目发布后修改这个自定义函数?

--  作者:Hyphen
--  发布时间:2016/7/18 10:34:00
--  
动态编译