以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请诸位师傅前辈帮我看一下自定义函数有没有错?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34172)

--  作者:xfilemark
--  发布时间:2013/6/1 12:50:00
--  请诸位师傅前辈帮我看一下自定义函数有没有错?
请诸位师傅前辈帮我看一下我的自定义函的从代码到调用有没有问题?谢谢!

自定义函数的名称是"gapTuition"

以下是自定义函数代码:
Dim ds As Date = args(0)
Dim da As Date = args(1)
Dim pp As Decimal = args(2)
Dim pc As Decimal = args(3)
Dim gap As Decimal = args(4)
Dim i As Integer

i = ds.DayOfWeek
ds = ds.AddDays(1-i)  \'以周一为参照时间
da = da.AddDays(1-i)  \'以周一为参照时间
i = Int(((da-ds).TotalDays+1)/7)+1
If da.DayOfWeek = 1 Then
i = i+1
End If
gap = (pc-pp)*i
Return gap

以下是调用自定义函数的代码:
Functions.Execute("gapTuition",CurrentTable.Current("dateStart"),CurrentTable.Current("dateAlt"),CurrentTable.Current("priPrev"),CurrentTable.Current("priCurr"),CurrentTable.Current("gapTuition"))
[此贴子已经被作者于2013-6-2 19:06:15编辑过]

--  作者:fjlclxj
--  发布时间:2013/6/1 13:33:00
--  
叫大家做阅读理解?图片点击可在新窗口打开查看
--  作者:zerov
--  发布时间:2013/6/1 13:46:00
--  
没看懂,先向你学习
--  作者:Bin
--  发布时间:2013/6/1 14:18:00
--  
你都不说你想要的结果,怎么帮你看?
--  作者:realredred
--  发布时间:2013/6/1 15:43:00
--  
好复雜,不是我這菜鳥能踏入的領域
--  作者:xfilemark
--  发布时间:2013/6/1 19:13:00
--  
不好意思,我的表达确实太有问题!
因为我在看自定义函数的帮助时不是特别明白,所以写起来也是疑虑重重。
我写这个函数的本意是:ds表示起算日期,da表示变费日期,pp表示旧资费(元/每次课),pc表示新资费(元/每次课),gap表示差额。用语言描述的意思就是:一个学生每周的周一上一次课,在他的入学日期和学费有效期之间,有一个学费变更日期,这个函数就是要计算在入学日期和变费日期这一段时期新旧学费的差额是多少。
这样,每次在需要这个差额结果的时候,只要调用这个函数并把运算的相关参数放进去运算就可以了。

呵呵,不知道是不是表达清楚了!

请各位师傅前辈指教,谢谢!
[此贴子已经被作者于2013-6-1 19:16:06编辑过]

--  作者:y2287958
--  发布时间:2013/6/2 0:02:00
--  
为何不用表达式呢
--  作者:狐狸爸爸
--  发布时间:2013/6/3 8:19:00
--  

参考:

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=34146&skin=0

 

最好用简单、直接、可靠、自己能理解的代码,计算机运行效率很高,0.000001秒的差别,任何人都感觉不到。

 

 

另外,代码中绝对不应该出现CurrentTable和current,因为当前表或当前行,并非一定就是触发事件的表和行,你应该用e参数。

例如你在DataColChanged调用,代码就应该是:

 

Dim dr As DataRow = e.dataRow

Functions.Execute("gapTuition",dr("dateStart"),dr("dateAlt"),dr("priPrev"),dr("priCurr"),dr("gapTuition"))


--  作者:jspta
--  发布时间:2013/6/3 9:16:00
--  
Functions.Execute("gapTuition",CurrentTable.Current("dateStart"),CurrentTable.Current("dateAlt"),CurrentTable.Current("priPrev"),CurrentTable.Current("priCurr"),CurrentTable.Current("gapTuition"))

 

Dim dr As DataRow = e.dataRow

Functions.Execute("gapTuition",dr)

 

那么多参数累不累。。。。自己在整合进函数就好了

这个函数要用应该要放到datacolchanged中。

 

 

 


--  作者:xfilemark
--  发布时间:2013/6/5 21:16:00
--  
非常感谢FoxFather和jspta的指点!  :-)