Foxtable(狐表)用户栏目专家坐堂 → 自定义函数


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

主题:自定义函数

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
自定义函数  发帖心情 Post By:2019/4/12 19:19:00 [只看该作者]

由资产负债表有很多种会计准则,希望每种会计准则的计算方法都在自定义函数中设置,以下自定义函数中的代码,但是在函数中怎么表示列名,黄色代码怎么修改?

'小企业会计准则"
msgbox(0)
Dim filter As String =  "年度 = '" & CurrentTable.Current("年度") & "' And 期间 = '" & CurrentTable.Current("期间") & "'And 公司名称 = '" & CurrentTable.Current("公司名称") & "' And 会计准则 = '" & CurrentTable.Current("会计准则") & "'"
If DataTables.Contains("科目余额转换") = True Then
    Dim dt As DataTable = DataTables("科目余额转换")
msgbox(2)
    Select Case CurrentTable.DataTable.name
        Case "年度","期间"
msgbox(1)
            If CurrentTable.DataTable.find(filter & "and 资产项目 = '固定资产净值'") IsNot Nothing Then
                CurrentTable.DataTable.find(filter & "And 资产项目 = '固定资产净值'")("资产期初金额") = CurrentTable.DataTable.Compute("sum(资产期初金额)",filter & "and 资产项目 = '固定资产原值'") - CurrentTable.DataTable.Compute("sum(资产期初金额)",filter & "and 资产项目 = '固定资产累计折旧'")
                CurrentTable.DataTable.find(filter & "And 资产项目 = '固定资产净值'")("资产期末金额") = CurrentTable.DataTable.Compute("sum(资产期末金额)",filter & "and 资产项目 = '固定资产原值'") - CurrentTable.DataTable.Compute("sum(资产期末金额)",filter & "and 资产项目 = '固定资产累计折旧'")
            End If
           
            If CurrentTable.DataTable.find(filter & "and 资产项目 = '无形资产净值'") IsNot Nothing Then
                CurrentTable.DataTable.find(filter & "And 资产项目 = '无形资产净值'")("资产期初金额") = CurrentTable.DataTable.Compute("sum(资产期初金额)",filter & "and 资产项目 = '无形资产原值'") - CurrentTable.DataTable.Compute("sum(资产期初金额)",filter & "and 资产项目 = '无形资产累计摊销'")
                CurrentTable.DataTable.find(filter & "And 资产项目 = '无形资产净值'")("资产期末金额") = CurrentTable.DataTable.Compute("sum(资产期末金额)",filter & "and 资产项目 = '无形资产原值'") - CurrentTable.DataTable.Compute("sum(资产期末金额)",filter & "and 资产项目 = '无形资产累计摊销'")
            End If
            If CurrentTable.DataTable.find(filter & "and 资产项目 = '流动资产合计'") IsNot Nothing Then
                CurrentTable.DataTable.find(filter & "And 资产项目 = '流动资产合计'")("资产期初金额") = CurrentTable.DataTable.Compute("sum(资产期初金额)",filter & "and 资产项目 in ('货币资金','短期投资','应收piao据','应收账款净值','预付账款','应收股利','应收利息','其他应收款净值','存货','待摊费用','一年内到期的非流动资产','其它流动资产')")
                CurrentTable.DataTable.find(filter & "And 资产项目 = '流动资产合计'")("资产期末金额") = CurrentTable.DataTable.Compute("sum(资产期末金额)",filter & "and 资产项目 in ('货币资金','短期投资','应收piao据','应收账款净值','预付账款','应收股利','应收利息','其他应收款净值','存货','待摊费用','一年内到期的非流动资产','其它流动资产')")
            End If

end select


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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 20:23:00 [只看该作者]

函数在什么地方使用的?按钮事件?表事件?

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2019/4/12 20:39:00 [只看该作者]

按钮或表事件都可以

 


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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 20:46:00 [只看该作者]

如果是表事件,把事件e参数传入函数,和正常表事件一样使用

如果是按钮事件,不需要判断列名,遍历所有行,或者当前行处理即可

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2019/4/12 21:18:00 [只看该作者]

帮我修改一下吧,黄色的怎么修改?或者采用其他方法

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 21:53:00 [只看该作者]

需要在什么地方用?看4楼

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2019/4/12 21:55:00 [只看该作者]

在表事件里

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/12 22:29:00 [只看该作者]

函数
dim e  = Args(0)
‘接着函数的处理和在表事件里面的用法完全一样
If e.DataCol.Name = "身份证号码" Then '如果更改的是身份证号码列
    If e.DataRow.IsNull("身份证号码"Then '身份证号码是否为空
        e.
DataRow("出生日期") = Nothing '如果为空,则清除出生日期
    
Else
    
    '否则从身份证号码列中提取出生日期
        e.
DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号码"))
    End
 If
End
 
If

事件调用
Functions.Execute("函数名称",e)

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2019/9/1 21:03:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.9.2.1
错误所在事件:自定义函数YiBuJiSuan
详细错误信息:
调用的目标发生了异常。
连接未关闭。 连接的当前状态为正在连接。

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2019/9/1 21:08:00 [只看该作者]

Select Case e.DataCol.name
    Case "楼房编号"
        Dim st As Date = Date.Now '将开始时间保存在变量st中
        Functions.AsyncEx ecute("YiBuJiSuan",e)

  MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")

end select

执行上述代码时会9楼的提示


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