Foxtable(狐表)用户栏目专家坐堂 → 动态合成表达式


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

主题:动态合成表达式

美女呀,离线,留言给我吧!
lfz123
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
动态合成表达式  发帖心情 Post By:2019/11/6 9:41:00 [只看该作者]

证照号码是字符型,月份是整数型,放在一起写有点蒙,提示有错误

Dim filter As String = "证照号码 = '" & e.DataRow("证照号码") & "'and 月份 < = " & e.DataRow("月份")
Dim v1 As Double = e.DataTable.SQLCompute("sum(本期收入)",filter) '本期收入

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


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

提示什么错误?
Dim filter As String = "证照号码 = '" & e.DataRow("证照号码") & "' and 月份 <= " & e.DataRow("月份")



 回到顶部
美女呀,离线,留言给我吧!
lfz123
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
回复:(有点蓝)提示什么错误?Dim filter As String...  发帖心情 Post By:2019/11/6 11:01:00 [只看该作者]

现在错误提示我:有一个参数没有被指定值.年份和月份都是整数型,在月份处和本期收入处输入数据就会有这个错误提示
If e.DataCol.Name = "姓名" Then  '测试没有问题
    If e.DataRow.IsNull("姓名") Then
        e.DataRow("证照号码") = Nothing
        e.DataRow("证照类型") = Nothing
        e.DataRow("类型") = Nothing
    Else
        Dim dr As DataRow = DataTables("人员信息").SQLfind("姓名 = '" & e.DataRow("姓名") & "' ")
        If dr IsNot Nothing Then
            e.DataRow("证照号码") = dr("证照号码")
            e.DataRow("证照类型") = dr("证照类型")
            e.DataRow("类型") = dr("类型")
        End If
    End If
End If

If e.DataCol.Name = "证照号码" Then '测试没有问题
    If e.DataRow.IsNull("证照号码") Then
        e.DataRow("姓名") = Nothing
        e.DataRow("证照类型") = Nothing
        e.DataRow("类型") = Nothing
    Else
        Dim dr As DataRow = DataTables("人员信息").SQLfind("证照号码 = '" & e.DataRow("证照号码") & "' ")
        If dr IsNot Nothing Then
            e.DataRow("姓名") = dr("姓名")
            e.DataRow("证照类型") = dr("证照类型")
            e.DataRow("类型") = dr("类型")
        End If
    End If
End If

If e.DataCol.Name = "证照号码" OrElse e.DataCol.name = "月份" Then '测试没有问题
    If DataTables.Contains("个人缴费信息") = False Then
        DataTables("个人缴费信息").load()
    End If
    If e.DataRow.IsNull("证照号码") OrElse e.DataRow.IsNull("月份") Then
        e.DataRow("基本养老保险费") = Nothing
        e.DataRow("基本医疗保险费") = Nothing
        e.DataRow("失业保险费") = Nothing
    Else
        Dim dr As DataRow = DataTables("个人缴费信息").SQLFind(" 年份 = " & e.DataRow("年份") & "and 月份 = " & e.DataRow("月份") & " And 证照号码 = '" & e.DataRow("证照号码") & "'")
        If dr IsNot Nothing Then
            e.DataRow("基本养老保险费") = dr("个人月缴纳养老保险费")
            e.DataRow("基本医疗保险费") = dr("个人月缴纳医疗保险费")
            e.DataRow("失业保险费") = dr("个人月缴纳失业保险费")
        End If
    End If
End If

'如果发生变化的是所得税列之外的数值型列,才重新计算所得税.
If e.DataCol.Name <> "所得税" AndAlso e.DataCol.IsNumeric Then
    If e.DataRow("所得项目") = "正常工资薪金所得" Then
        Dim filter As String = "证照号码 = '" & e.DataRow("证照号码") & "'and 月份 <= " & e.DataRow("月份")
        Dim v1 As Double = e.DataTable.SQLCompute("sum(本期收入)",filter) '本期收入
        Dim v2 As Double = e.DataTable.SQLCompute("sum(社保扣款小计)",filter) '累计社保扣款
        Dim v3 As Double = e.DataTable.SQlCompute("sum(住房公积金)",filter) '累计住房公积金
        Dim v4 As Double = e.DataTable.SQLCompute("sum(附加扣除小计)",filter) '累计附加扣除
        Dim y As Integer = e.DataTable.SQLCompute("count(证照号码)","证照号码 = '" & e.DataRow("证照号码") & "'") '累计附加扣除
        Dim v5 As Double = y * 5000 '累计减除费用
        Dim v6 As Double = v2+v3+V4 '累计专项扣除
        Dim v8 As Double = v1 - v6 - V5 '累计应纳税所得额
        If v8 >  0 Then
            Dim v9 = iif((v8)>960000,(v8)*0.45-181920,IIF((v8)>660000,(v8)*0.35-85920,IIF((v8)>420000,(v8)*0.30-52920,IIF((v8)>300000,(v8)*0.25-31920,IIF((v8)>144000,(v8)*0.2-16920,IIF((v8)>36000,(v8)*0.1-2520,(v8)*0.03))))))
            Dim v10 As Double = e.DataTable.SQLCompute("sum(所得税)","证照号码 = '" & e.DataRow("证照号码") & "'and 月份 < " & e.DataRow("月份")) '累计已交税金
            If v9 > v10 Then
                e.DataRow("所得税") = v9 - v10
            End If
        End If
    ElseIf e.DataRow("所得项目") = "全年一次性奖金收入" Then
        Dim v As Double = e.DataRow("本期收入")
        e.DataRow("所得税") = iif((v)>960000,(v)*0.45-181920,IIF((v)>660000,(v)*0.35-85920,IIF((v)>420000,(v)*0.30-52920,IIF((v)>300000,(v)*0.25-31920,IIF((v)>144000,(v)*0.2-16920,IIF((v)>36000,(v)*0.1-2520,(v)*0.03))))))
        If e.DataCol.Name = "本期收入" Then
            If e.DataRow.IsNull("本期收入") Then
                e.DataRow("所得税") = Nothing
            End If
        End If
        
    End If
End If
[此贴子已经被作者于2019/11/6 11:18:27编辑过]

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


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

确定数据库里月份是整数列?

msgbox(filter) 显示什么?

 回到顶部
美女呀,离线,留言给我吧!
lfz123
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
回复:(有点蓝)确定数据库里月份是整数列?msgbox(f...  发帖心情 Post By:2019/11/6 16:11:00 [只看该作者]

蓝老师我知道了是因为有表达式列求和,我已经改好了
 Dim v2 As Double = e.DataTable.SQLCompute("sum(社保扣款小计)",filter) '累计社保扣款

 回到顶部