Foxtable(狐表)用户栏目专家坐堂 → 请诸位师傅前辈帮我看一下自定义函数有没有错?


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

主题:请诸位师傅前辈帮我看一下自定义函数有没有错?

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


加好友 发短信
等级:幼狐 帖子:121 积分:960 威望:0 精华:0 注册:2013/4/9 3:23:00
请诸位师傅前辈帮我看一下自定义函数有没有错?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:2468 威望:0 精华:2 注册:2013/1/16 19:33:00
  发帖心情 Post By:2013/6/1 13:33:00 [只看该作者]

叫大家做阅读理解?图片点击可在新窗口打开查看

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


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
  发帖心情 Post By:2013/6/1 13:46:00 [只看该作者]

没看懂,先向你学习

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/1 14:18:00 [只看该作者]

你都不说你想要的结果,怎么帮你看?

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


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By:2013/6/1 15:43:00 [只看该作者]

好复雜,不是我這菜鳥能踏入的領域

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


加好友 发短信
等级:幼狐 帖子:121 积分:960 威望:0 精华:0 注册:2013/4/9 3:23:00
  发帖心情 Post By:2013/6/1 19:13:00 [只看该作者]

不好意思,我的表达确实太有问题!
因为我在看自定义函数的帮助时不是特别明白,所以写起来也是疑虑重重。
我写这个函数的本意是:ds表示起算日期,da表示变费日期,pp表示旧资费(元/每次课),pc表示新资费(元/每次课),gap表示差额。用语言描述的意思就是:一个学生每周的周一上一次课,在他的入学日期和学费有效期之间,有一个学费变更日期,这个函数就是要计算在入学日期和变费日期这一段时期新旧学费的差额是多少。
这样,每次在需要这个差额结果的时候,只要调用这个函数并把运算的相关参数放进去运算就可以了。

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

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

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/6/2 0:02:00 [只看该作者]

为何不用表达式呢

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:121 积分:960 威望:0 精华:0 注册:2013/4/9 3:23:00
  发帖心情 Post By:2013/6/5 21:16:00 [只看该作者]

非常感谢FoxFather和jspta的指点!  :-)


 回到顶部
总数 11 1 2 下一页