Foxtable(狐表)用户栏目专家坐堂 → [求助]跨表查累计数计算当月数的问题


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

主题:[求助]跨表查累计数计算当月数的问题

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


加好友 发短信
等级:幼狐 帖子:156 积分:1445 威望:0 精华:0 注册:2020/5/21 16:23:00
[求助]跨表查累计数计算当月数的问题  发帖心情 Post By:2020/8/6 22:52:00 [只看该作者]

大哥好 小弟对现实中求当月专项附加扣除数做了一个简化模拟 抄文档改了上半段 下半段抄另外一块文档已经没方向了。。。 还请蓝大出手相助 先谢谢您啦图片点击可在新窗口打开查看

图片点击可在新窗口打开查看图片点击可在新窗口打开查看

寻找 表C(“累计金额”),条件:表C(“单位”、“日期”、“姓名”)= 表B当前行(“单位”、“日期”、“姓名”)

当表B(“单位”+“姓名”)第一次出现时,时表B(当月金额)= 表C(累计金额)(注找不到时表C(累计金额)算作0)。

当表B(“单位”+“姓名”)不是第一次出现时,表B(当月金额)= 表C(累计金额)- 表b(当月金额合计数,条件:单位等于当前行单位、且姓名等于当前行姓名)(注找不到时表C(累计金额)算作0)


Select Case e.DataCol.Name
    Case "单位","日期","姓名","当月金额"
        
        Dim mr As DataRow = e.DataRow
        
        Dim dr1 As DataRow
        dr1 = DataTables("表C").Find("[单位] = '" & mr("单位") & "' And [日期] = #" & mr("日期") & "# And [姓名] = '" & mr("姓名") & "'")
        
        Dim dr2 As DataRow
        dr2 = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [单位] = '" & mr("单位") & "' And [姓名] = '" & mr("姓名") & "'", "[_SortKey] Desc")
        If dr2 Is Nothing Then
            If dr1 Is Nothing Then
                mr("当月金额") = Nothing
            Else
                mr("当月金额") = dr1("累计金额")
            End If
            dr2 = mr
        End If
        
        Dim drs As List(of DataRow)
        Dim Filter As String
        drs = e.DataTable.Select("[_SortKey] >= " & dr2("_SortKey") & " And [单位] = '" & dr2("单位") & "' And [姓名] = '" & dr2("姓名") & "'", "[_SortKey]")
        For Each dr3 As DataRow In drs
            Dim Val1 As Double = e.DataTable.Compute("Sum(当月金额)"," [单位] = '" & dr3("单位") & "' And [姓名] = '" & dr3("姓名") & "'")
            mr("当月金额") = dr1("累计金额") - Val1
        Next
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106152 积分:539877 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/6 23:22:00 [只看该作者]

试试,不行就上传实例
……
        If dr2 Is Nothing Then
            If dr1 Is Nothing Then
                mr("当月金额") = Nothing
            Else
                mr("当月金额") = dr1("累计金额")
            End If
else
Dim Val1 As Double = e.DataTable.Compute("Sum(当月金额)"," [单位] = '" & dr3("单位") & "' And [姓名] = '" & dr3("姓名") & "' and [_SortKey] <" & mr("_SortKey"))
            If dr1 Is Nothing Then
                mr("当月金额") = 0 - Val1
            Else
                mr("当月金额") = dr1("累计金额") - Val1 
            End If
        End If
        
        Dim drs As List(of DataRow)
        Dim Filter As String
        drs = e.DataTable.Select("[_SortKey] >= " & dr2("_SortKey") & " And [单位] = '" & dr2("单位") & "' And [姓名] = '" & dr2("姓名") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
dr2 = drs(i)
dr1 = DataTables("表C").Find("[单位] = '" & dr2("单位") & "' And [日期] = #" & dr2("日期") & "# And [姓名] = '" & dr2("姓名") & "'")
            Dim Val1 As Double = e.DataTable.Compute("Sum(当月金额)"," [单位] = '" & dr2("单位") & "' And [姓名] = '" & dr2("姓名") & "' and [_SortKey] <" & dr2("_SortKey"))
            If dr1 Is Nothing Then
                dr2("当月金额") = 0 - Val1
            Else
                dr2("当月金额") = dr1("累计金额") - Val1 
            End If
        Next
End Select

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


加好友 发短信
等级:幼狐 帖子:156 积分:1445 威望:0 精华:0 注册:2020/5/21 16:23:00
  发帖心情 Post By:2020/8/7 10:20:00 [只看该作者]

 蓝大好 测试了下 这样可以满足需求了 谢谢您啦  今天我再测试最后一个个调税 搞完后 来分享一下用foxtable一起核算多加公司工资的思路图片点击可在新窗口打开查看

Select Case e.DataCol.Name
    Case "单位","日期","姓名","当月金额"
        
        Dim mr As DataRow = e.DataRow
        
        Dim dr1 As DataRow
        dr1 = DataTables("表C").Find("[单位] = '" & mr("单位") & "' And [日期] = #" & mr("日期") & "# And [姓名] = '" & mr("姓名") & "'")
        
        Dim dr2 As DataRow
        dr2 = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [单位] = '" & mr("单位") & "' And [姓名] = '" & mr("姓名") & "'", "[_SortKey] Desc")
        If dr2 Is Nothing Then
            If dr1 Is Nothing Then
                mr("当月金额") = 0
            Else
                mr("当月金额") = dr1("累计金额")
            End If
            dr2 = mr
        End If
        
        
        Dim drs As List(of DataRow)
        Dim Filter As String
        drs = e.DataTable.Select("[_SortKey] >= " & dr2("_SortKey") & " And [单位] = '" & dr2("单位") & "' And [姓名] = '" & dr2("姓名") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            dr2 = drs(i)
            dr1 = DataTables("表C").Find("[单位] = '" & dr2("单位") & "' And [日期] = #" & dr2("日期") & "# And [姓名] = '" & dr2("姓名") & "'")
            Dim Val1 As Double = e.DataTable.Compute("Sum(当月金额)"," [单位] = '" & dr2("单位") & "' And [姓名] = '" & dr2("姓名") & "' and [_SortKey] <" & dr2("_SortKey"))
            If dr1 Is Nothing Then
                dr2("当月金额") = 0 - Val1
            Else
                dr2("当月金额") = dr1("累计金额") - Val1
            End If
        Next
        
End Select

 回到顶部