以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 流水账计算问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192026) |
-- 作者:15666282205 -- 发布时间:2024/5/24 13:59:00 -- 流水账计算问题 老师,我建了一个现金流水账,发现数据变动时,只有正在显示的行余额重新计算,而不是把后台的数据全部计算。我用的是SQL数据库,麻烦您指点一下。 \'-----------------------------自动计算余额----------------------- Select Case e.DataCol.Name Case "收入","支出" Dim dr As DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[序号] < " & e.DataRow("序号"), "[序号] Desc") \'找出上一行 If dr Is Nothing Then \'如果没有找到上一行,说明本行就是第一行 e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出") dr = e.DataRow End If drs = e.DataTable.Select("[序号] >= " & dr("序号"), "[序号]") For i As Integer = 1 To drs.Count - 1 \'重算余下行的余额 drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") Next End Select |
-- 作者:有点蓝 -- 发布时间:2024/5/24 14:24:00 -- 这种用法只能计算已经加载的数据。如果数据多,考虑做月(季、年)结功能,当前表只保留当月(季、年)的数据,然后全部加载处理。结算后的数据移到另外一个同结构的结算表里 |
-- 作者:15666282205 -- 发布时间:2024/5/24 14:44:00 -- 还有其他方法可以实现后台更新吗? |
-- 作者:有点蓝 -- 发布时间:2024/5/24 14:54:00 -- 有办法。但是更不合理,因为直接后台处理会比加载后处理效率会低很多倍。 |
-- 作者:15666282205 -- 发布时间:2024/5/24 15:29:00 -- 明白了,谢谢 |