Foxtable(狐表)用户栏目专家坐堂 → 为啥跳转出


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

主题:为啥跳转出

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


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
为啥跳转出  发帖心情 Post By:2019/8/1 11:29:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:简易税额.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:应交税额.png
图片点击可在新窗口打开查看

红色背景的测试有,可计算结果为啥出不来呢?

Select Case e.DataCol.Name
    Case "年份","月份"
        Dim dr As DataRow = e.DataRow
        Dim filter As String = "[年份] = "& dr("年份") & "and [月份] = "& dr("月份") & " and 税率 <> 0.03 " '进项统计
        Dim filter1 As String = "[年份] = "& dr("年份") & "and [月份] = "& dr("月份") & "and 税额 > 0 " '销项统计
        Dim filter2 As String = "[年份] = "& dr("年份") & "and [月份] = "& dr("月份") & "And 税额 <  0 " '进项转出统计
        Dim filter3 As String = "[年份] = "& dr("年份") & "and [月份] = "& dr("月份") & " and 税率 = 0.03 " '简易征收统计
        For Each dc As DataCol In DataTables("税金统计").DataCols '计算简易征收的税
            If dc.Name.Contains("简易销项金额") = True Then
                MessageBox.Show(1) '测试用
                dr("进项_金额") = DataTables("进项fa piao").SQLCompute("sum(金额)",filter1)
                dr("进项_税额") = DataTables("进项fa piao").SQLCompute("sum(税额)",filter1)
                dr("进项_价税合计") = DataTables("进项fa piao").SQLCompute("sum(金额 + 税额)",filter1)
                dr("进项_份数") = DataTables("进项fa piao").SQLCompute("count(*)",filter1)
                dr("进项转出_份数") = DataTables("进项fa piao").SQLCompute("count(*)",filter2)
                dr("进项转出_税额") = DataTables("进项fa piao").SQLCompute("sum(税额)",filter2)
                
                dr("销项_份数") = DataTables("销项fa piao").SQLCompute("count(*)",filter)
                dr("销项_金额") = DataTables("销项fa piao").SQLCompute("sum(金额)",filter)
                dr("销项_税额") = DataTables("销项fa piao").SQLCompute("sum(税额)",filter)
                dr("销项_价税合计") = DataTables("销项fa piao").SQLCompute("sum(金额 + 税额)",filter)
                
                dr("简易销项份数") = DataTables("销项fa piao").SQLCompute("count(*)",filter3)
                dr("简易销项金额") = DataTables("销项fa piao").SQLCompute("sum(金额)",filter3)
                dr("简易销项税额") = DataTables("销项fa piao").SQLCompute("sum(税额)",filter3)
                dr("简易销项价税合计") = DataTables("销项fa piao").SQLCompute("sum(金额 + 税额)",filter3)
                
                Dim dr1 As DataRow
                Dim drs As List(of DataRow)
                dr1 = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
                If dr1 Is Nothing Then '如果没有找到上一行,说明本行就是第一行
                    e.DataRow("正数是应交税额负数是留抵税额") = e.DataRow("销项_税额") - e.DataRow("进项_税额") - e.DataRow("进项转出_税额")
                    dr1 = e.DataRow
                End If
                drs = e.DataTable.Select("[_SortKey] >= " & dr1("_SortKey"), "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
                    
                    If drs(i-1)("正数是应交税额负数是留抵税额")  >=  0  Then
                        drs(i)("正数是应交税额负数是留抵税额") =  drs(i)("销项_税额") - drs(i)("进项_税额") - e.DataRow("进项转出_税额")
                    Else
                        drs(i)("正数是应交税额负数是留抵税额") = drs(i-1)("正数是应交税额负数是留抵税额") + drs(i)("销项_税额") - drs(i)("进项_税额")- e.DataRow("进项转出_税额")
                    End If
                Next
                If e.DataRow("正数是应交税额负数是留抵税额") < 0  Then
                    e.DataRow("应交税额") = e.DataRow("简易销项税额")
                Else
                    MessageBox.Show("应交税额:" & e.DataRow("正数是应交税额负数是留抵税额")) '测试用
                    MessageBox.Show("简易销项税额:" & e.DataRow("简易销项税额")) '测试用
                    e.DataRow("应交税额") = e.DataRow("正数是应交税额负数是留抵税额") + e.DataRow("简易销项税额")
                End If
                
                
            Else
                dr("进项_金额") = DataTables("进项fa piao").SQLCompute("sum(金额)",filter1)
                dr("进项_税额") = DataTables("进项fa piao").SQLCompute("sum(税额)",filter1)
                dr("进项_价税合计") = DataTables("进项fa piao").SQLCompute("sum(金额 + 税额)",filter1)
                dr("进项_份数") = DataTables("进项fa piao").SQLCompute("count(*)",filter1)
                dr("进项转出_份数") = DataTables("进项fa piao").SQLCompute("count(*)",filter2)
                dr("进项转出_税额") = DataTables("进项fa piao").SQLCompute("sum(税额)",filter2)
                
                dr("销项_份数") = DataTables("销项fa piao").SQLCompute("count(*)",filter)
                dr("销项_金额") = DataTables("销项fa piao").SQLCompute("sum(金额)",filter)
                dr("销项_税额") = DataTables("销项fa piao").SQLCompute("sum(税额)",filter)
                dr("销项_价税合计") = DataTables("销项fa piao").SQLCompute("sum(金额 + 税额)",filter)
                
                Dim dr1 As DataRow
                Dim drs As List(of DataRow)
                dr1 = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
                If dr1 Is Nothing Then '如果没有找到上一行,说明本行就是第一行
                    e.DataRow("正数是应交税额负数是留抵税额") = e.DataRow("销项_税额") - e.DataRow("进项_税额") - e.DataRow("进项转出_税额")
                    dr1 = e.DataRow
                End If
                drs = e.DataTable.Select("[_SortKey] >= " & dr1("_SortKey"), "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
                    If drs(i-1)("正数是应交税额负数是留抵税额")  >=  0  Then
                        drs(i)("正数是应交税额负数是留抵税额") =  drs(i)("销项_税额") - drs(i)("进项_税额") - e.DataRow("进项转出_税额")
                    Else
                        drs(i)("正数是应交税额负数是留抵税额") = drs(i-1)("正数是应交税额负数是留抵税额") + drs(i)("销项_税额") - drs(i)("进项_税额")- e.DataRow("进项转出_税额")
                    End If
                Next
                
                If e.DataRow("正数是应交税额负数是留抵税额") < 0 Then
                    e.DataRow("应交税额") = Nothing
                Else
                    e.DataRow("应交税额") = e.DataRow("正数是应交税额负数是留抵税额")
                    
                End If
            End If
        Next
End Select

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


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

代码是放在哪个表的datacolchanged事件的?

为什么要遍历这个表的所有列?For Each dc As DataCol In DataTables("税金统计").DataCols
没看出来这个遍历和整体逻辑有什么关系

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


加好友 发短信
等级:二尾狐 帖子:530 积分:4613 威望:0 精华:0 注册:2018/3/24 18:04:00
回复:(有点蓝)代码是放在哪个表的datacolchanged事...  发帖心情 Post By:2019/8/1 13:51:00 [只看该作者]

是放在 税金统计 的DataColChanged中的
我是因为在同一个系统中可以切换不同的数据源,当切换到不同数据源时,表的结构有所变化,变化的部分见截图的红色框框,所以我就做了这样一个判断,我觉得也是这个判断出了问题,但又不知道怎么改

图片点击可在新窗口打开查看此主题相关图片如下:无简易征收项的数据源.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:有简易征收项的数据库.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2019/8/1 13:51:34编辑过]

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


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

如果要判断是否存在某列,参考:http://www.foxtable.com/webhelp/topics/1428.htm

If e.DataTable.DataCols.Contains("简易销项金额") Then


 回到顶部