以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 流水账转账问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=185118) |
||||
-- 作者:ycs5801 -- 发布时间:2023/2/5 9:07:00 -- 流水账转账问题 ![]() ![]() 此类流水账的设计方法要复杂一些,DataColChanged事件代码为:
上述代码的3到12行很好理解,当我们修改产品、入库、出库三列内容后,即从此行开始重算同产品所有行的余额。 AfterMoveRow事件代码变化不大,条件表达式中加入产品比较即可: Dim Key As DecimalDim 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
这段代码如果我只有两种产品,pd01和pd02,出库时候都和原来一样,但是pd02入库的时候,是把pd01的库存数转到了pd02,相应的pd01也减少了库存,需要计算出pd02的实时库存,和pd01、pd02的总库存,请问这个怎么修改? |
||||
-- 作者:有点蓝 -- 发布时间:2023/2/5 20:31:00 -- 请上传实例说明,给出一些测试数据,并手工录入正确的结果做比较 |
||||
-- 作者:ycs5801 -- 发布时间:2023/2/6 11:29:00 --
![]() ![]() |
||||
-- 作者:有点蓝 -- 发布时间:2023/2/6 11:33:00 -- 同时增加一行不就行了,产品为pd01,出库4 |
||||
-- 作者:ycs5801 -- 发布时间:2023/2/6 15:16:00 -- 如果用sql server数据库, Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [产品] = \'" & e.DataRow("产品") & "\'" 代码中还使用("_SortKey") 这个,行不行,适用sql吗?
|
||||
-- 作者:有点蓝 -- 发布时间:2023/2/6 15:18:00 -- 表格有这个_SortKey插入行标记列就行,http://www.foxtable.com/webhelp/topics/1791.htm |
||||
-- 作者:ycs5801 -- 发布时间:2023/2/6 18:25:00 -- 以下是引用有点蓝在2023/2/6 15:18:00的发言:
表格有这个_SortKey插入行标记列就行,http://www.foxtable.com/webhelp/topics/1791.htm 如果是用“分页加载与流水账”这个案例中的代码,我是阿里云sqlserver数据库,多人同时操作增删改查使用,利用这个"_SortKey"会不会有问题? |
||||
-- 作者:有点蓝 -- 发布时间:2023/2/6 20:04:00 -- 如果是多人同时操作同一个表,不管利用什么列都会有问题。可以考虑这种用法:http://www.foxtable.com/webhelp/topics/3007.htm |