以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 高效流水账 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161655)
|
-- 作者:cd_tdh
-- 发布时间:2021/3/25 15:14:00
-- 高效流水账
老师,碰到一个类似高效流水账的问题,因为数据是分页加载,当我后面项目用到的数据,没加载,用Select时,用上一个项目的数据用不了,这种怎么处理呢?
Select
Case e.DataCol.Name Case
"收入","支出" Dim dr As
DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") \'找出上一行 If dr Is Nothing
Then
\'如果没有找到上一行,说明本行就是第一行 e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出") dr = e.DataRow End
If drs = e.DataTable.Select("[_SortKey] > = " & dr("_SortKey"), "[_SortKey]") For i As
Integer = 1
To drs.Count - 1
\'重算余下行的余额 drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") Next End
Select
|
-- 作者:有点蓝
-- 发布时间:2021/3/25 15:24:00
--
http://www.foxtable.com/webhelp/topics/2926.htm
|
-- 作者:cd_tdh
-- 发布时间:2021/3/25 16:24:00
--
我这个代码哪儿不对呢?
Select Case e.DataCol.Name Case "合同编码","上报周期","上月完成产值" Dim dr As DataRow Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_Identify] < \'" & mr("_Identify") & "\' And [合同编码] = \'" & mr("合同编码") & "\'", "[_Identify] Desc") If dr Is Nothing Then mr("本年完成产值") = mr("上月完成产值") mr("累计完成产值") = mr("本年完成产值") mr("剩余产值") = mr("合同金额") + mr("变更金额") - mr("累计完成产值") dr = mr End If drs = e.DataTable.Select("[_Identify] >=\' " & dr("_Identify") & "\' And [合同编码] = \'" & dr("合同编码") & "\'", "[_Identify]") For i As Integer = 1 To drs.Count - 1 drs(i)("本年完成产值") = drs(i-1)("本年完成产值") + drs(i)("上月完成产值") drs(i)("累计完成产值") = drs(i-1)("累计完成产值") + drs(i)("本年完成产值") drs(i)("剩余产值") = drs(i)("合同金额") + drs(i)("变更金额") - drs(i)("累计完成产值") Next If e.DataCol.Name = "合同编码" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[_Identify] < \'" & mr("_Identify") & "\' And [合同编码] = \'" & e.OldValue & "\'", "[_Identify] Desc") If dr Is Nothing Then dr = e.DataTable.Find("[合同编码] = \'" & e.OldValue & "\'", "[_Identify]") If dr IsNot Nothing Then mr("本年完成产值") = mr("上月完成产值") mr("累计完成产值") = mr("本年完成产值") mr("剩余产值") = mr("合同金额") + mr("变更金额") - mr("累计完成产值") End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[_Identify] >=\' " & dr("_Identify") & "\' And [合同编码] = \'" & dr("合同编码") & "\'", "[_Identify]") For i As Integer = 1 To drs.Count - 1 drs(i)("本年完成产值") = drs(i-1)("本年完成产值") + drs(i)("上月完成产值") drs(i)("累计完成产值") = drs(i-1)("累计完成产值") + drs(i)("本年完成产值") drs(i)("剩余产值") = drs(i)("合同金额") + drs(i)("变更金额") - drs(i)("累计完成产值") Next End If End If End Select
|
-- 作者:有点蓝
-- 发布时间:2021/3/25 16:30:00
--
看不出什么问题。测试有什么问题?如果计算不正确,上传实例测试一下,同时说明一下计算逻辑
|
-- 作者:cd_tdh
-- 发布时间:2021/3/25 16:48:00
--
老师,数据结构和效果就这样,我实际数据是分页加载的,有跨年的情况,但是统计本年是指按照上报周期年来统计的。
上报周期的做的年月输入然后合并字符串到上报周期列
|
-- 作者:有点蓝
-- 发布时间:2021/3/25 16:54:00
--
无法测试,项目没看到有任何代码,输入3楼代码,提示缺少列。
|
-- 作者:cd_tdh
-- 发布时间:2021/3/25 16:59:00
--
发的文件里面本月完成产值,应该是上月完成产值,列名错了
|
-- 作者:有点蓝
-- 发布时间:2021/3/25 17:12:00
--
以实例数据来说,那个单元格计算有问题?
|
-- 作者:cd_tdh
-- 发布时间:2021/3/26 9:52:00
--
老师,
1.累计完成产值还是不对;
2.另外还有一个问题,计算本年的时候,逻辑是1月上报上一年12月,2月上报1月,这样逻辑,计算本年完成产值就是按照上报周期的前4位年来统计
2.实际是分页加载数据的;
[此贴子已经被作者于2021/3/26 9:52:31编辑过]
|
-- 作者:cd_tdh
-- 发布时间:2021/3/26 14:21:00
--
老师,请看看改怎么修改啊
|