以文本方式查看主题

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

--  作者:kaituozhe
--  发布时间:2017/6/29 21:28:00
--  自定义函数
我做了一个自定义函数的例子,报错是什么原因?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义函数.foxdb


--  作者:有点色
--  发布时间:2017/6/29 22:20:00
--  

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义函数.foxdb


--  作者:kaituozhe
--  发布时间:2017/6/30 14:32:00
--  
我编写一个计算列值求和的函数,怎么做?比如,如果“项目列”行值是资产合计,那么资产合计所在行的期初余额的值就等于 流动资产和非流动资产所行的期初余额合计,怎么写代码?
--  作者:kaituozhe
--  发布时间:2017/6/30 14:40:00
--  

Dim jisuanziduan As String  = Args(0)
Dim jisuanhangzhi As String  = Args(1)
Dim quzhiziduan As String  = Args(2)
Dim jisuanzhi As Double  = Args(3)
Dim quzhiziduanzhi As String  = Args(4)
If e.DataRow.name = "jisuanziduan" AndAlso e.DataRow("jisuanziduan") = "jisuanhangzhi" Then
    For i As Integer = 4 To Args.Length - 1
        jisuanzhi = jisuanzhi + e.DataTable.find("quzhiziduan = Args(i)" )
    Next
End If
Return jisuanzhi

编制以上自定义函数的代码是为了实现3楼的功能,但是自定义函数不能使用e.参数,因此不知道该怎么写了。


--  作者:kaituozhe
--  发布时间:2017/6/30 14:42:00
--  

Dim jisuanziduan As String  = Args(0)
Dim jisuanhangzhi As String  = Args(1)
Dim quzhiziduan As String  = Args(2)
Dim jisuanzhi As Double  = Args(3)
Dim quzhiziduanzhi As String  = Args(4)
If e.DataRow.name = "jisuanziduan" AndAlso e.DataRow("jisuanziduan") = "jisuanhangzhi" Then
    For i As Integer = 4 To Args.Length - 1
        jisuanzhi = jisuanzhi + e.DataTable.find("quzhiziduan = Args(i)" )(“quzhiziduan”)4楼代码这行写错了
    Next
End If
Return jisuanzhi

编制以上自定义函数的代码是为了实现3楼的功能,但是自定义函数不能使用e.参数,因此不知道该怎么写了。


--  作者:有点蓝
--  发布时间:2017/6/30 16:10:00
--  
Dim jisuanziduan As String  = Args(0)
Dim jisuanhangzhi As String  = Args(1)
Dim quzhiziduan As String  = Args(2)
Dim jisuanzhi As Double  = Args(3)
Dim quzhiziduanzhi As String  = Args(4)
If e.DataRow.name = jisuanziduan AndAlso e.DataRow(jisuanziduan) = jisuanhangzhi Then
    For i As Integer = 4 To Args.Length - 1
        Dim dr As DataRow =  e.DataTable.find(quzhiziduan & “ = \'" & Args(i) & "\'" )
        If dr IsNot Nothing Then
            jisuanzhi = jisuanzhi +dr(quzhiziduan)
        End If
    Next
End If
Return jisuanzhi

--  作者:有点甜
--  发布时间:2017/6/30 16:13:00
--  

 回复5楼,你的e参数,可以在调用函数的时候,直接传递进去的啊。

 

 然后再在函数里获取

 

Dim e = args(0)


--  作者:kaituozhe
--  发布时间:2017/6/30 17:42:00
--  

6楼没有办法在自定义函数中使用呀?7楼说的意思我不明白做,请你把6楼的函数按7楼思路给编写一下吧。


--  作者:有点蓝
--  发布时间:2017/6/30 18:04:00
--  
上传实例测试
--  作者:有点甜
--  发布时间:2017/6/30 18:36:00
--  
以下是引用kaituozhe在2017/6/30 17:42:00的发言:

6楼没有办法在自定义函数中使用呀?7楼说的意思我不明白做,请你把6楼的函数按7楼思路给编写一下吧。

 

调用abc函数

Functions.Execute("abc", e)

 

-------------

 

定义abc函数

Dim e = args(0)