以文本方式查看主题 - 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 |