标题:sql语句调用自定义函数,出现错误
只看楼主
kent73
Rank: 1
等 级:新手上路
帖 子:61
专家分:5
注 册:2009-3-4
结帖率:46.67%
已结贴  问题点数:20 回复次数:4 
sql语句调用自定义函数,出现错误
个人所得税自定义函数为:
   Public Function grSds(Str1 As Double) As Double
    On Error GoTo errorer
    Dim Abc As Single
    Abc = Str1 - 2000
    Select Case Abc
    Case Is <= 0
        Abc = 0
    Case Is <= 500
        Abc = Abc * 5 / 100
    Case Is <= 2000
        Abc = Abc * 10 / 100 - 25
    Case Is <= 5000
        Abc = Abc * 15 / 100 - 125
    Case Is <= 20000
        Abc = Abc * 20 / 100 - 375
    Case Is <= 40000
        Abc = Abc * 25 / 100 - 1375
    Case Is <= 60000
        Abc = Abc * 30 / 100 - 3375
    Case Is <= 80000
        Abc = Abc * 35 / 100 - 6375
    Case Is <= 100000
        Abc = Abc * 40 / 100 - 10375
    Case Is > 100000
        Abc = Abc * 45 / 100 - 15375
    End Select
    grSds = Round(Abc, 2)
errorer:
    Exit Function
End Function

sql语句为:
sql = "INSERT INTO 工资发放 ( 个人编号, 部门, 班别, 姓名, 补贴金额, 全勤奖, 职能, 职务, 工龄, 其他, 补助金, 应发合计, 税金, 养老金, 医保金, 失保, 公积金, 工会费, 应扣合计, 实发合计) SELECT 基础档案.个人编号, 基础档案.部门, 基础档案.班别, 基础档案.姓名, 工资管理.补贴金额, 工资管理.全勤奖, 工资管理.职能, 工资管理.职务, 工资管理.工龄, 工资管理.其他, 工资管理.补助金, ([补贴金额]+[全勤奖]+[职能]+[职务]+[工龄]+[其他]+[补助金]) AS 应发合计, grSds([应发合计]),2) AS 税金, 工资管理.养老金, 工资管理.医保金, 工资管理.失保, 工资管理.公积金, 工资管理.工会费, ([养老金]+[医保金]+[失保]+[公积金]+[工会费]+[税金]) AS 应扣合计, [应发合计]-[应扣合计] AS 实发合计  FROM (基础档案 INNER JOIN 工资管理 ON 基础档案.个人编号 = 工资管理.个人编号) INNER JOIN Tb_银行账号 ON 基础档案.个人编号 = Tb_银行账号.个人编号 ))"

运行sql语句时,出现错误:实时错误'-2147217900(80040e14)': 'grsds'不是可以识别的函数名。

请问怎么解决这个问题呢?
搜索更多相关主题的帖子: sql 函数 语句 定义 
2010-11-28 11:43
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
得分:10 
可以这样吗?

无知
2010-11-28 11:52
kent73
Rank: 1
等 级:新手上路
帖 子:61
专家分:5
注 册:2009-3-4
得分:0 
该怎么做呢?
2010-11-28 12:29
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:10 
应该是SQL 返回原始值,你在VB里使用时,通过这个函数进行计算一下。


你要写 SQL 的扩展函数,就必须使用 SQL的存储过程,然后把函数写里到里。

授人于鱼,不如授人于渔
早已停用QQ了
2010-11-28 19:04
kent73
Rank: 1
等 级:新手上路
帖 子:61
专家分:5
注 册:2009-3-4
得分:0 
以下是引用风吹过b在2010-11-28 19:04:03的发言:

应该是SQL 返回原始值,你在VB里使用时,通过这个函数进行计算一下。


你要写 SQL 的扩展函数,就必须使用 SQL的存储过程,然后把函数写里到里。
菜鸟唉
可以帮我做个示例吗?
2010-11-29 08:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-327139-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017838 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved