以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨表提取个税率和扣除数的代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133403)

--  作者:hanzhang98
--  发布时间:2019/4/13 17:56:00
--  [求助]跨表提取个税率和扣除数的代码
老师好。根据“实发工资”,跨表从“个人所得税预扣率表A”提取符合的税率、速算扣除数,并分别写入“个税率”和“速算扣除数”这两列。但代码不对,请老师帮助指正。谢谢。

Select Case e.DataCol.name
    Case "实发工资","预扣税率","速算扣除数"     \'
        If e.DataRow.IsNull("实发工资") Then        \'
            e.DataRow("扣个税") = Nothing     \'
            e.DataRow("速算扣除数") = Nothing     \'
        Else
            Dim Ljy As String = e.DataRow("实发工资")  \'
            Dim Yksl As DataRow = DataTables("个人所得税预扣率表A").Find("累计应纳税所得额=\'" & e.DataRow("累计应税所得额") & "\' And 最小值 < " & Ljy & " and 最大值 >= " & Ljy)
            If Yksl IsNot Nothing Then
                e.DataRow("预扣税率") = Yksl("预扣税率")
                e.DataRow("速算扣除数") = Yksl("速算扣除数")
            Else
                e.DataRow("预扣税率") = Nothing
                e.DataRow("速算扣除数") = Nothing
            End If
        End If
End Select



[此贴子已经被作者于2019/4/14 16:24:49编辑过]

--  作者:hanzhang98
--  发布时间:2019/4/14 11:35:00
--  
老师好。请老师帮助指导。谢谢。
--  作者:有点甜
--  发布时间:2019/4/14 11:47:00
--  
Select Case e.DataCol.name
    Case "实发工资","预扣税率","速算扣除数"     \'
        If e.DataRow.IsNull("实发工资") Then        \'
            e.DataRow("速算扣除数") = Nothing     \'
        Else
            Dim Ljy As String = e.DataRow("实发工资")  \'
            Dim Yksl As DataRow = DataTables("个人所得税预扣率表A").Find("累计应纳税所得额>=" & ljy, "累计应纳税所得额")
            If Yksl IsNot Nothing Then
                e.DataRow("速算扣除数") = Yksl("速算扣除数")
            Else
                e.DataRow("速算扣除数") = Nothing
            End If
        End If
End Select

--  作者:hanzhang98
--  发布时间:2019/4/14 13:34:00
--  
谢谢老师。
[此贴子已经被作者于2019/4/14 15:42:51编辑过]

--  作者:hanzhang98
--  发布时间:2019/4/14 16:21:00
--  
老师好。再请教老师,如何将下面【判断发生变动列】的相关代码去掉改为随时根据“累计应纳税所得额”列的数值变化随时计算提取“税率” 和 “速算扣除数” 。l因为需要计算和输入的列太多,有手工输入数值的列、有跨表取数的列、还有表达式计算列,如果其中只要有一列不写入【判断发生变动列】代码中,则计算提取“税率” 和 “速算扣除数”的代码就不运行。

也就是:1、能不能将下面代码的黄色部分去掉;   
           2、如果能去掉黄色部分的代码,剩余的代码需要如何修改,才能随时根据“累计应纳税所得额”列的数值变化随时计算提取“税率” 和 “速算扣除数” 。

Select Case e.DataCol.name
    Case "实发工资","预扣税率","速算扣除数"     \'
        If e.DataRow.IsNull("实发工资") Then        \'
            e.DataRow("速算扣除数") = Nothing     \'
        Else

            Dim Ljy As String = e.DataRow("实发工资")  \'
            Dim Yksl As DataRow = DataTables("个人所得税预扣率表A").Find("累计应纳税所得额>=" & ljy, "累计应纳税所得额")
            If Yksl IsNot Nothing Then
                e.DataRow("速算扣除数") = Yksl("速算扣除数")
            Else
                e.DataRow("速算扣除数") = Nothing
            End If
        End If
End Select

谢谢。
[此贴子已经被作者于2019/4/14 16:24:27编辑过]

--  作者:有点甜
--  发布时间:2019/4/14 16:33:00
--  

改成

 

Select Case e.DataCol.name
    Case "速算扣除数"
    Case Else
        Dim Ljy As String = e.DataRow("实发工资")  \'
        Dim Yksl As DataRow = DataTables("个人所得税预扣率表A").Find("累计应纳税所得额>=" & ljy, "累计应纳税所得额")
        If Yksl IsNot Nothing Then
            e.DataRow("速算扣除数") = Yksl("速算扣除数")
        Else
            e.DataRow("速算扣除数") = Nothing
        End If
End Select