Foxtable(狐表)用户栏目专家坐堂 → 跨表计算时出错


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

主题:跨表计算时出错

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


加好友 发短信
等级:五尾狐 帖子:1019 积分:7155 威望:0 精华:0 注册:2008/9/1 22:34:00
跨表计算时出错  发帖心情 Post By:2010/8/6 16:33:00 [只看该作者]


此主题相关图片如下:12.jpg
按此在新窗口浏览图片

 

月工资汇总中的DataColChanged代码:

 

Select Case e.DataCol.Name
 Case "工号"
        Dim dr As DataRow
        dr = DataTables("扣费表").Find("工号 = '" & e.DataRow("工号") & "'" & "and 会计期间= '" & e.DataRow("会计期间") & "'" )
        If dr IsNot Nothing '如果找到, 则设置各列内容
            e.DataRow("应付工资_节日未上班工资_时间")= dr("节日未上班_总计小时")
            e.DataRow("代扣费_社会保险")= dr("代扣费_社会保险")
            e.DataRow("代扣费_个人所得税")= dr("代扣费_个人所得税")
            e.DataRow("代扣费_其他费用_水费")= dr("代扣费_其他费用_水费")
            e.DataRow("代扣费_其他费用_电费")= dr("代扣费_其他费用_电费")
            e.DataRow("代扣费_其他费用_管理费")= dr("代扣费_其他费用_管理费")
            e.DataRow("代扣费_其他费用_其他")= dr("代扣费_其他费用_其他")
            e.DataRow("其他款项_其他补贴")= dr("其它补贴")
            e.DataRow("其他款项_年限津贴")= dr("年限津贴")
            e.DataRow("其他款项_奖金")= dr("奖金")
            e.DataRow("备注")= dr("备注")
            e.DataRow("身份证号码")= dr("身份证号码")
            e.DataRow("社保电脑号")= dr("社保电脑号")
            e.DataRow("银行账号")= dr("银行账号")
        Else
            '否则清除部门和姓名两列的内容
            e.DataRow("应付工资_节日未上班工资_时间")= Nothing
            e.DataRow("代扣费_社会保险") =Nothing
            e.DataRow("代扣费_个人所得税") =Nothing
            e.DataRow("代扣费_其他费用_水费") =Nothing
            e.DataRow("代扣费_其他费用_电费") = Nothing
            e.DataRow("代扣费_其他费用_管理费")= Nothing
            e.DataRow("代扣费_其他费用_其他")= Nothing
            e.DataRow("其他款项_其他补贴")= Nothing
            e.DataRow("其他款项_年限津贴")= Nothing
            e.DataRow("其他款项_奖金")= Nothing
            e.DataRow("备注")=Nothing
            e.DataRow("身份证号码")= Nothing
            e.DataRow("社保电脑号")= Nothing
            e.DataRow("银行账号")= Nothing
        End If

    Case "本月正班工资","本月总工时" '如果是列的内容变动
            Dim Digits As Integer = 2
            Dim Value As Double = e.DataRow("本月正班工资") / e.DataRow("本月总工时")
            e.DataRow("时薪")=Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits '四舍五入
    Case "时薪","应付工资_正班工资_时间"
            e.DataRow("应付工资_正班工资_金额")=e.DataRow("时薪") * e.DataRow("应付工资_正班工资_时间")
    Case "时薪","应付工资_正常工作日超时工资_时间"
            e.DataRow("应付工资_正常工作日超时工资_金额")=(e.DataRow("时薪") * e.DataRow("应付工资_正常工作日超时工资_时间"))*1.5
    Case "时薪","应付工资_周六日超时工资_时间"
            e.DataRow("应付工资_周六日超时工资_金额")=(e.DataRow("时薪") * e.DataRow("应付工资_周六日超时工资_时间"))*2
    Case "时薪","应付工资_节日未上班工资_时间"
    e.DataRow("应付工资_节日未上班工资_金额")=(e.DataRow("时薪") * e.DataRow("应付工资_节日未上班工资_时间"))

    Case "应付工资_正班工资_金额","应付工资_正常工作日超时工资_金额","应付工资_周六日超时工资_金额","应付工资_节日未上班工资_金额"
          e.DataRow("应付工资_小计")=e.DataRow("应付工资_正班工资_金额") + e.DataRow("应付工资_正常工作日超时工资_金额")+ e.DataRow("应付工资_周六日超时工资_金额") + e.DataRow("应付工资_节日未上班工资_金额")
    Case "代扣费_社会保险","代扣费_个人所得税","代扣费_其他费用_水费","代扣费_其他费用_电费","代扣费_其他费用_管理费","代扣费_其他费用_其他"
            e.DataRow("代扣费_小计")=e.DataRow("代扣费_社会保险") + e.DataRow("代扣费_个人所得税") + e.DataRow("代扣费_其他费用_水费")+ e.DataRow("代扣费_其他费用_电费") + e.DataRow("代扣费_其他费用_管理费") + e.DataRow("代扣费_其他费用_其他")
    Case "应付工资_小计"
      Dim Filter As String = "[工号] = '" & e.DataRow("工号") & "'and 会计期间= '" & e.DataRow("会计期间") & "'"
      DataTables("扣费表").DataCols("工号").RaiseDataColChanged(Filter)
      DataTables("月工资汇总").DataCols("工号").RaiseDataColChanged()
      e.DataRow("实付工资")=e.DataRow("应付工资_小计") - e.DataRow("代扣费_小计")
   Case "代扣费_小计"
            e.DataRow("实付工资")=e.DataRow("应付工资_小计") - e.DataRow("代扣费_小计")
    Case "其他款项_其他补贴","其他款项_年限津贴","其他款项_本月补助","其他款项_奖金"
            e.DataRow("其他款项_小计")=e.DataRow("其他款项_其他补贴") + e.DataRow("其他款项_年限津贴") + e.DataRow("其他款项_本月补助") + e.DataRow("其他款项_奖金")


End Select

 

扣费表中的DataColChanged代码:

 

 

Select Case e.DataCol.Name
    Case "数据状态" '如果是数据状态列的内容变动
        If e.NewValue = True Then '而且变动后的值是True(已勾选)
            e.DataRow("审核时间")=Date.Now
            e.DataRow("审核用户")=Vars("_UserName")
            e.DataRow.Locked = True
        Else e.DataRow("审核时间")=Nothing
            e.DataRow("审核用户")=Nothing
        End If
    Case "工号"
        Dim dr As DataRow
        Dim dr1 As DataRow
       
        dr = DataTables("工资录入表").Find("工号 = '" & e.DataRow("工号") & "'" & "and 会计期间= '" & e.DataRow("会计期间") & "'" )
        dr1= DataTables("月工资汇总").Find("工号 = '" & e.DataRow("工号") & "'" & "and 会计期间= '" & e.DataRow("会计期间") & "'" )
        If dr IsNot Nothing Orelse dr1 IsNot Nothing Then '如果找到, 则设置各列内容
            e.DataRow("姓名")= dr("姓名")
            e.DataRow("交税人")= dr("姓名")
            e.DataRow("部门")= dr("部门")
            e.DataRow("应付工资")= dr1("应付工资_小计")
           
        Else
            '否则清除部门和姓名两列的内容
            e.DataRow("部门") =Nothing
            e.DataRow("姓名") =Nothing
            e.DataRow("交税人") =Nothing
            e.DataRow("工号") = "月工资汇总不存在此人"
            e.DataRow("应付工资")= Nothing
           
        End If
    Case "工号","姓名"
        Dim dr2 As DataRow
        dr2 = DataTables("员工资料").Find("工号 = '" & e.DataRow("工号") & "'" & " And 姓名 = '" & e.DataRow("姓名") & "'" & "And 员工状态 = '在职'")
        If dr2 IsNot Nothing Then
            e.DataRow("身份证号码")= dr2("身份证号码")
            e.DataRow("社保缴费率")= dr2("社保缴费率")
            e.DataRow("医疗费率")= dr2("医疗费率")
            e.DataRow("社保电脑号")= dr2("社保电脑号")
            e.DataRow("银行账号")= dr2("银行账号")
        Else
            e.DataRow("身份证号码")= Nothing
            e.DataRow("社保缴费率")= Nothing
            e.DataRow("医疗费率")= Nothing
            e.DataRow("社保电脑号")= Nothing
            e.DataRow("银行账号")= Nothing
        End If
       
    Case "节日未上班_总计小时"
       
        Dim Filter As String = "工号 = '" & e.DataRow("工号") & "'" & "and 会计期间= '" & e.DataRow("会计期间") & "'"
        DataTables("月工资汇总").DataCols("工号").RaiseDataColChanged(Filter)
    Case "应付工资"
        If e.DataRow("应付工资")*0.13>=2328 Then
            e.DataRow("住房补贴")=2328
        Else
            Dim Digits As Integer = 2
            Dim Value As Double = e.DataRow("应付工资")*0.13
            e.DataRow("住房补贴")=Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits '四舍五入
        End If
       
        If e.DataRow("代扣费_手工输入")= False Then
           
            Dim Digits As Integer = 2
            Dim Value As Double = (e.DataRow("应付工资")*e.DataRow("社保缴费率"))+e.DataRow("医疗费率")
            Dim Value1 As Double = e.DataRow("应付工资")*e.DataRow("社保缴费率")
            Dim Value2 As Double=e.DataRow("应付工资")*(0.1-e.DataRow("社保缴费率"))
            e.DataRow("代扣费_社会保险")=Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits '四舍五入
            e.DataRow("养老")=Math.Floor(Value1 * 10 ^ Digits + 0.5) / 10 ^ Digits '四舍五入
            If e.DataRow("医疗费率")>0 Then
                e.DataRow("医序")=e.DataRow("医疗费率")
            Else
                e.DataRow("医序")=Math.Floor(Value2 * 10 ^ Digits + 0.5) / 10 ^ Digits '四舍五入
            End If
        End If
        e.DataRow("代扣费_个人所得税")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入"))
        e.DataRow("税金")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入"))
        If e.DataRow("应付工资") >= e.DataRow("起始缴税月收入") Then
            e.DataRow("税表收入额")=e.DataRow("应付工资")-e.DataRow("费用额")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")
            e.DataRow("计税金额")=e.DataRow("应付工资")-e.DataRow("起始缴税月收入")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")
        Else
            e.DataRow("税表收入额")=Nothing
            e.DataRow("计税金额")=Nothing
        End If
       
       
    Case "代扣费_社会保险","代扣费_个人所得税","代扣费_其他费用_水费","代扣费_其他费用_电费","代扣费_其他费用_管理费","代扣费_其他费用_其他"
        e.DataRow("代扣费_小计")= e.DataRow("代扣费_社会保险")+e.DataRow("代扣费_个人所得税")+e.DataRow("代扣费_其他费用_水费")+e.DataRow("代扣费_其他费用_电费")+e.DataRow("代扣费_其他费用_管理费")+e.DataRow("代扣费_其他费用_其他")
       
    Case "应付工资","代扣费_社会保险","住房补贴"
        e.DataRow("代扣费_个人所得税")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入"))
        e.DataRow("税金")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入"))
        If e.DataRow("应付工资") >= e.DataRow("起始缴税月收入") Then
            e.DataRow("税表收入额")=e.DataRow("应付工资")-e.DataRow("费用额")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")
            e.DataRow("计税金额")=e.DataRow("应付工资")-e.DataRow("起始缴税月收入")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")
        Else
            e.DataRow("税表收入额")=Nothing
            e.DataRow("计税金额")=Nothing
        End If
       
    Case "计税金额"
        Select Case e.DataRow("计税金额")
            Case 0
                e.DataRow("税率")=Nothing
                e.DataRow("速算扣除数")=Nothing
            Case 1 To 500
                e.DataRow("税率")=0.05
                e.DataRow("速算扣除数")=0
            Case 501 To 2000
                e.DataRow("税率")=0.1
                e.DataRow("速算扣除数")=25
            Case 2001 To 5000
                e.DataRow("税率")=0.15
                e.DataRow("速算扣除数")=125
            Case 5001 To 20000
                e.DataRow("税率")=0.2
                e.DataRow("速算扣除数")=375
            Case 20001 To 40000
                e.DataRow("税率")=0.25
                e.DataRow("速算扣除数")=1375
            Case 40001to 60000
                e.DataRow("税率")=0.3
                e.DataRow("速算扣除数")=3375
            Case 60001 To 100000
                e.DataRow("税率")=0.35
                e.DataRow("速算扣除数")=6375
            Case 80000 To 100000
                e.DataRow("税率")=0.4
                e.DataRow("速算扣除数")=10375
            Case > 100000
                e.DataRow("税率")=0.45
                e.DataRow("速算扣除数")=15375
        End Select
End Select

[此贴子已经被作者于2010-8-6 16:43:07编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/6 17:12:00 [只看该作者]

 If dr IsNot Nothing Orelse dr1 IsNot Nothing Then '如果找到, 则设置各列内容

 

应该改为:

 

If dr IsNot Nothing AndAlso dr1 IsNot Nothing Then '如果找到, 则设置各列内容

 

全面检查一下, 类似的都要改

 

 


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/6 17:51:00 [只看该作者]

Find("工号 = '" & e.DataRow("工号") & "'" & "and 会计期间= '" & e.DataRow("会计期间") & "'" )    

这个 " & " 多余了吧?


 回到顶部