Foxtable(狐表)用户栏目专家坐堂 → 选择行计算


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

主题:选择行计算

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
选择行计算  发帖心情 Post By:2017/11/30 17:13:00 [只看该作者]

能帮忙看看这个吗?
就是合计列得到的数据是  关联编号列 相同的变动编号的最后的一行的合计
比如 关联编号 有20003、20004等,然后 然后20003 和20004相同的还有变动编号,只算出每一个 关联编号相同的切变动编号最后的一行的合计 
就是选择分别选择不同关联编号的变动编号最大增加列数字计算,感谢 感谢 


Select Case e.DataCol.Name
    Case "项目信息_关联编号","增加"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [项目信息_关联编号] = '" & e.DataRow("项目信息_关联编号") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] <= " & dr("_SortKey") & " And [项目信息_关联编号] = '" & dr("项目信息_关联编号") & "'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(增加)",Filter)
            dr("合计") = Val1 
        Next
End Select '求欠款明细


图片点击可在新窗口打开查看此主题相关图片如下:360截图-1881453.jpg
图片点击可在新窗口打开查看


[此贴子已经被作者于2017/11/30 17:28:12编辑过]

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


加好友 发短信
等级:超级版主 帖子:106578 积分:542061 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/11/30 17:50:00 [只看该作者]

没看懂你的意思

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/11/30 18:02:00 [只看该作者]

首先感谢你,是这样的,就想计算出 关联编号分别相同的最后一行,最后一行是用变动编号(时间编号)列来确定的,
比如 关联编号有 很多相同的 20003、20004、20005、然后合计就是,20003的最后一行+20004的最后一行+20005的最后一行,感谢 感谢 麻烦了?谢谢
其实就是在增加输入后累计到合计里面,只是合计的条件是,只计算这行前面关联编号分别的最后(变动编号)一行,比如 20003的变动编号有 20171122215614和20171122215631,然后20003就算计20171122215631就可以了,其实就是相同的关联编号只计算一行,计算变动编号的最后一行,麻烦了,感谢 感谢 
[此贴子已经被作者于2017/11/30 18:10:14编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/30 18:43:00 [只看该作者]

 某行的合计 = 当前行的增加 + 上一行的增加 ?

 

参考代码

 

 

Select Case e.DataCol.Name
    Case "项目信息_关联编号","增加"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [项目信息_关联编号] = '" & e.DataRow("项目信息_关联编号") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] < " & dr("_SortKey") & " And [项目信息_关联编号] = '" & dr("项目信息_关联编号") & "'"
            Dim fdr As DataRow = e.DataTable.find(filter, "_SortKey desc")
            If fdr IsNot Nothing Then
                dr("合计") = fdr("增加")
            Else
                dr("合计") = dr("增加")
            End If
        Next
End Select '求欠款明细

 

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/11/30 19:02:00 [只看该作者]

感谢,感谢,这样的 叫上一行,只是上一行相同的最加最后一行, 
比如 前面有很多 20003就只加其中的一行,也就是最后一行,20004之前也有很多行,也只加20004的最后一行,
之前的20003相同的 增加列有 5、8、10、3,根据变动编号,确定那一行是被加的,把选择的与20004的最后一行相加,也是根据变动编号的最后一行选择,
就是的合计列 得到是不同的关联编号的和,但是相同的只能计算一行,也就是最后一行,
好比想得 列20003的最后一行加20004的最后一行,这样依次类推,比如添加一行有出现了一个20004(同时也会根据时间出现一个变动编号),然后之前的20004就不计算了,如果又出现了20003,之前的20003也就不计算了,就是相同的关联编号只选中一行计算,把不同的关联编号算计合计,感谢 感谢,我说得有些复杂了,感谢你,费心了,谢谢 谢谢 

图片点击可在新窗口打开查看此主题相关图片如下:360截图-8092781.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/11/30 19:11:44编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/30 22:48:00 [只看该作者]

Select Case e.DataCol.Name
    Case "项目信息_关联编号","增加"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [项目信息_关联编号] = '" & e.DataRow("项目信息_关联编号") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] < " & dr("_SortKey") & " And [项目信息_关联编号] <> '" & dr("项目信息_关联编号") & "'"
            Dim fdr As DataRow = e.DataTable.find(filter, "_SortKey desc")
            If fdr IsNot Nothing Then
                dr("合计") = dr("增加")  + fdr("增加")
            Else
                dr("合计") = dr("增加")
            End If
        Next
End Select

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/12/1 0:10:00 [只看该作者]

谢谢 了,非常感谢,这么晚了还麻烦了,只是如果在关联编号列加入其他的不知道为什么有对不上了,比如 后面又加入20006、20007,得出的结果就不对了,麻烦你了。感谢 。困了就早点休息,我在学习 学习,感谢了

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/1 9:13:00 [只看该作者]

 上传具体实例测试。

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


加好友 发短信
等级:九尾狐 帖子:2701 积分:17999 威望:0 精华:0 注册:2013/4/9 10:41:00
  发帖心情 Post By:2017/12/1 13:59:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:360截图-2345953.jpg
图片点击可在新窗口打开查看
就是把相同的编号选择其中的一行就可以了,这行就是最后一行,感谢 感谢 

合计列只计算当行之前项目编号不同的最后一行。
比如
5行等于五行之前的合计,
第6行就不计算第一行了,因为第一行的编号1在第六行已经发现了,
第7行就不计算第一行和第二行了,因为编号1、2都已经出现了。
第17行就只计算17、16、15、14、行,之前重复的就不用在计算了,感谢 感谢,

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:加减运算.table



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/1 14:21:00 [只看该作者]

Select Case e.DataCol.Name
    Case "项目编号","增加"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & ""
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] < " & dr("_SortKey") & ""
            Dim Filter2 = "[_SortKey] < " & dr("_SortKey") & " And [项目编号] = '" & dr("项目编号") & "'"
            Dim fdr As DataRow = e.DataTable.find(filter, "_SortKey desc")
            Dim fdr2 As DataRow = e.DataTable.find(filter2, "_SortKey desc")
            If fdr IsNot Nothing Then
                If fdr2 Is Nothing Then
                    dr("合计") = dr("增加")  + fdr("合计")
                Else
                    dr("合计") = dr("增加")  + fdr("合计") - fdr2("增加")
                End If
            Else
                If fdr2 Is Nothing Then
                    dr("合计") = dr("增加")
                Else
                    dr("合计") = dr("增加")  - fdr2("增加")
                End If
            End If
        Next
End Select

 回到顶部
总数 25 1 2 3 下一页