以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 流水账问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98608) |
-- 作者:edisontsui -- 发布时间:2017/4/2 9:48:00 -- 流水账问题 我有一个出入库流水账,现在的代码是这样的:
Datacolchanged
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("[_SortKey] < " & mr("_SortKey")
& " And [物料编号] = \'" & mr("物料编号") &
"\'", "[_SortKey] Desc") If dr Is
Nothing Then
mr("余数") = mr("入库数量") + mr("出库数量") dr = mr End If drs =
e.DataTable.Select("[_SortKey] >= " & dr("_SortKey")
& " And [物料编号] = \'" & dr("物料编号") &
"\'", "[_SortKey]") 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("[_SortKey] <
" & mr("_SortKey") & " And [物料编号] = \'" &
e.OldValue & "\'", "[_SortKey] Desc") If dr
Is Nothing Then dr
= e.DataTable.Find("[物料编号] = \'" & e.OldValue &
"\'", "[_SortKey]") If
dr IsNot Nothing Then
dr("余数") = dr("入库数量") + dr("出库数量") End
If End If If dr
IsNot Nothing Then drs
= e.DataTable.Select("[_SortKey] >= " &
dr("_SortKey") & " And [物料编号] = \'" &
dr("物料编号") & "\'", "[_SortKey]") 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
Aftermoverow Dim Key As Decimal Dim Index As Integer Dim Filter As String Dim r As Row Index = Math.Min(e.OldIndex, e.NewIndex) Key = e.Table.Rows(Index)("_SortKey") r = e.Table.Rows(e.NewIndex) Filter = "[_SortKey]
>= " & Key & " And [物料编号] = \'" &
r("物料编号")
& "\'" e.Table.DataTable.DataCols("入库数量").RaiseDataColChanged(Filter)
datarowdeleting e.DataRow("入库数量") = 0 e.DataRow("出库数量") = 0
我的问题是,我在afteropenproject加了排序的代码,所以,待我完全进入系统之后,余数这栏的数据就不对了,也就是说,再也不像流水账了。我希望在对数据进行重新排序之后,流水账的余数也能自动发生变化,应该在哪里加些什么代码呢? 谢谢。 |
-- 作者:有点色 -- 发布时间:2017/4/2 11:04:00 -- 把_sortkey改成你的排序列。
看完 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=96147&skin=0
|
-- 作者:edisontsui -- 发布时间:2017/4/2 13:17:00 -- 可是我在afteropenproject的排序代码是这样的:Tables("出入库").Sort = "出入库日期,出入库单号,物料编号"。怎么处理好? |
-- 作者:有点色 -- 发布时间:2017/4/2 14:58:00 -- 把_sortkey改成出入库日期。
多条件的,有多少个条件,那么合成的字符,就连接多少个字符。
不会做,上传实例。 |
-- 作者:edisontsui -- 发布时间:2017/4/2 15:51:00 -- 我出入库日期是表达式列,如何将出入库日期改为_sortkey? |
-- 作者:有点色 -- 发布时间:2017/4/2 19:38:00 -- 认认真真看2楼,把代码 _Sortkey 改成你的日期列。 |
-- 作者:edisontsui -- 发布时间:2017/8/9 18:17:00 -- 我在afteropenproject 里面的排序是这样的:Tables("出入库").Sort = "出入库日期,出入原因 desc,出入库单号",那么如何修改我的datacolumnchanged 和 aftermoverow 代码?谢谢。 |
-- 作者:有点甜 -- 发布时间:2017/8/9 18:23:00 -- 为什么要修改datacolchanged事件?
既然你排序了,那么,aftermoveRow就不会有效了,不需要写。 |
-- 作者:edisontsui -- 发布时间:2017/8/10 11:37:00 -- 我把aftermoveRow删除了,也是达不到要求的效果。 |
-- 作者:有点甜 -- 发布时间:2017/8/10 12:02:00 -- 以下是引用edisontsui在2017/8/10 11:37:00的发言:
我把aftermoveRow删除了,也是达不到要求的效果。
上传实例说明你的问题。 |