以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 选择行计算 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110306) |
||||
-- 作者:yangwenghd -- 发布时间: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 \'求欠款明细 [此贴子已经被作者于2017/11/30 17:28:12编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2017/11/30 17:50:00 -- 没看懂你的意思 |
||||
-- 作者:yangwenghd -- 发布时间:2017/11/30 18:02:00 -- 首先感谢你,是这样的,就想计算出 关联编号分别相同的最后一行,最后一行是用变动编号(时间编号)列来确定的, 比如 关联编号有 很多相同的 20003、20004、20005、然后合计就是,20003的最后一行+20004的最后一行+20005的最后一行,感谢 感谢 麻烦了?谢谢 其实就是在增加输入后累计到合计里面,只是合计的条件是,只计算这行前面关联编号分别的最后(变动编号)一行,比如 20003的变动编号有 20171122215614和20171122215631,然后20003就算计20171122215631就可以了,其实就是相同的关联编号只计算一行,计算变动编号的最后一行,麻烦了,感谢 感谢
[此贴子已经被作者于2017/11/30 18:10:14编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/11/30 18:43:00 -- 某行的合计 = 当前行的增加 + 上一行的增加 ?
参考代码
Select Case e.DataCol.Name |
||||
-- 作者:yangwenghd -- 发布时间:2017/11/30 19:02:00 -- 感谢,感谢,这样的 叫上一行,只是上一行相同的最加最后一行, 比如 前面有很多 20003就只加其中的一行,也就是最后一行,20004之前也有很多行,也只加20004的最后一行, 之前的20003相同的 增加列有 5、8、10、3,根据变动编号,确定那一行是被加的,把选择的与20004的最后一行相加,也是根据变动编号的最后一行选择, 就是的合计列 得到是不同的关联编号的和,但是相同的只能计算一行,也就是最后一行, 好比想得 列20003的最后一行加20004的最后一行,这样依次类推,比如添加一行有出现了一个20004(同时也会根据时间出现一个变动编号),然后之前的20004就不计算了,如果又出现了20003,之前的20003也就不计算了,就是相同的关联编号只选中一行计算,把不同的关联编号算计合计,感谢 感谢,我说得有些复杂了,感谢你,费心了,谢谢 谢谢
[此贴子已经被作者于2017/11/30 19:11:44编辑过]
|
||||
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2017/12/1 0:10:00 -- 谢谢 了,非常感谢,这么晚了还麻烦了,只是如果在关联编号列加入其他的不知道为什么有对不上了,比如 后面又加入20006、20007,得出的结果就不对了,麻烦你了。感谢 。困了就早点休息,我在学习 学习,感谢了 |
||||
-- 作者:有点甜 -- 发布时间:2017/12/1 9:13:00 -- 上传具体实例测试。 |
||||
-- 作者:yangwenghd -- 发布时间:2017/12/1 13:59:00 -- 此主题相关图片如下:360截图-2345953.jpg 就是把相同的编号选择其中的一行就可以了,这行就是最后一行,感谢 感谢 合计列只计算当行之前项目编号不同的最后一行。 比如 5行等于五行之前的合计, 第6行就不计算第一行了,因为第一行的编号1在第六行已经发现了, 第7行就不计算第一行和第二行了,因为编号1、2都已经出现了。 第17行就只计算17、16、15、14、行,之前重复的就不用在计算了,感谢 感谢,
|
||||
-- 作者:有点甜 -- 发布时间: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 |