以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 流水账 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=152882) |
||||
-- 作者:lshshlxsh -- 发布时间:2020/7/24 13:38: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("[日期] <= #" & mr("日期") & "# And [科目] = \'" & mr("科目") & "\'", "日期 desc, 制单时间 desc") If dr("_Identify") = mr("_Identify") Then mr("余额") = mr("增") - mr("减") dr = mr End If drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [科目] = \'" & dr("科目") & "\'", "[日期], 制单时间") For i As Integer = 1 To drs.Count - 1 drs(i)("余额") = drs(i-1)("余额") + drs(i)("增") - drs(i)("减") Next If e.DataCol.Name = "科目" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[日期] <= #" & mr("日期") & "# And [科目] = \'" & e.OldValue & "\'", "日期 desc , 制单时间 desc ") If dr Is Nothing Then dr = e.DataTable.Find("[科目] = \'" & e.OldValue & "\'", "[日期] desc, 制单时间 desc") If dr IsNot Nothing Then dr("余额") = dr("增") - dr("减") End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [科目] = \'" & dr("科目") & "\'", "日期, 制单时间") For i As Integer = 1 To drs.Count - 1 drs(i)("余额") = drs(i-1)("余额") + drs(i)("增") - drs(i)("减") Next End If End If End Select |
||||
-- 作者:有点蓝 -- 发布时间:2020/7/24 13:58:00 --
|
||||
-- 作者:lshshlxsh -- 发布时间:2020/7/24 15:41:00 -- 谢谢老师 我对比了一下 这段代码 跟我之前的 貌似一样的 修改日期后 还是不对哦
[此贴子已经被作者于2020/7/24 15:42:46编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/7/24 15:44:00 -- Case "科目","增","减","日期" |
||||
-- 作者:lshshlxsh -- 发布时间:2020/7/24 16:32:00 -- 谢谢老师 这列是加上了 但是 日期改变后 还是错的 |
||||
-- 作者:有点蓝 -- 发布时间:2020/7/24 16:53:00 -- [此贴子已经被作者于2020/7/24 16:53:54编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/7/24 17:01: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("[日期] < #" & mr("日期") & "# And [科目] = \'" & mr("科目") & "\'", "日期 desc, 制单时间 desc") If dr Is Nothing Then mr("余额") = mr("增") - mr("减") dr = mr End If drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [科目] = \'" & dr("科目") & "\'", "[日期], 制单时间") For i As Integer = 1 To drs.Count - 1 drs(i)("余额") = drs(i-1)("余额") + drs(i)("增") - drs(i)("减") Next If e.DataCol.Name = "科目" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[日期] <= #" & mr("日期") & "# And [科目] = \'" & e.OldValue & "\'", "日期 desc , 制单时间 desc ") If dr Is Nothing Then dr = e.DataTable.Find("[科目] = \'" & e.OldValue & "\'", "[日期] desc, 制单时间 desc") If dr IsNot Nothing Then dr("余额") = dr("增") - dr("减") End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [科目] = \'" & dr("科目") & "\'", "日期, 制单时间") For i As Integer = 1 To drs.Count - 1 drs(i)("余额") = drs(i-1)("余额") + drs(i)("增") - drs(i)("减") Next End If End If Case "日期" If e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then Dim dr As DataRow Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) Dim d As Date = e.OldValue If e.OldValue > e.NewValue Then d = e.NewValue dr = e.DataTable.Find("[日期] < #" & d & "# And [科目] = \'" & mr("科目") & "\'", "日期 desc , 制单时间 desc ") If dr Is Nothing Then dr = e.DataTable.Find("[科目] = \'" & mr("科目") & "\'", "[日期], 制单时间") If dr IsNot Nothing Then dr("余额") = dr("增") - dr("减") End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[日期] >= #" & dr("日期") & "# And [科目] = \'" & dr("科目") & "\'", "日期, 制单时间") For i As Integer = 1 To drs.Count - 1 drs(i)("余额") = drs(i-1)("余额") + drs(i)("增") - drs(i)("减") Next End If End If End Select [此贴子已经被作者于2020/7/24 17:02:12编辑过]
|
||||
-- 作者:lshshlxsh -- 发布时间:2020/7/24 17:23:00 -- 谢谢老师 安装您的方法 但是在替换科目的时候还是会错的哦 这两个银行应该都要重新计算的吧 [此贴子已经被作者于2020/7/24 17:39:11编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/7/24 17:43:00 -- 知道就自己改改咯,和原来的用法差不多的 |