以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 库存分盘计算 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=78144) |
||||
-- 作者:实话实说 -- 发布时间:2015/12/3 8:35:00 -- 库存分盘计算 表A,如何自动计算库存_分盘?
|
||||
-- 作者:Hyphen -- 发布时间:2015/12/3 8:51:00 -- DataColChanged事件 Select Case e.DataCol.Name Case "入仓_分盘","出仓_分盘" If e.DataRow.IsNull("入仓_分盘") = False AndAlso e.DataRow.IsNull("出仓_分盘") = False Then e.DataRow("库存_分盘") = Eval(e.DataRow("入仓_分盘")) - Eval(e.DataRow("出仓_分盘")) End If End Select |
||||
-- 作者:实话实说 -- 发布时间:2015/12/3 9:40:00 -- 呵,我的需求是这样的 入仓:52.1+56.8+72.3+50.0+42.8,出仓:52.1+50.0 库存_分盘应该是56.8+72.3+42.8,2楼算的是库存_数量 |
||||
-- 作者:大红袍 -- 发布时间:2015/12/3 9:56:00 -- Select Case e.DataCol.Name |
||||
-- 作者:实话实说 -- 发布时间:2015/12/3 10:23:00 -- 4楼代码对于A产品没有问题,对于B产品不行,B产品怎么计算呢 |
||||
-- 作者:大红袍 -- 发布时间:2015/12/3 10:37:00 -- Select Case e.DataCol.Name Case "入仓_分盘","出仓_分盘" Dim ls As new List(Of String) ls.AddRange(e.DataRow("入仓_分盘").split("+")) For Each s As String In e.DataRow("出仓_分盘").split("+") Dim ary() As String = s.split("*") For i As Integer = 0 To ls.Count - 1 If ary.length = 2 Then Dim ary2() As String = ls(i).split("*") If ary2.length = 2 Then If ary(1) = ary2(1) Then ls(i) = (ary2(0) - ary(0)) & "*" & ary2(1) End If End If Else If ls(i) = s Then ls.Removeat(i) Exit For Else Dim ary2() As String = ls(i).split("*") If ary2.length = 2 Then If ary(0) = ary2(1) Then ls(i) = (ary2(0) - 1) & "*" & ary2(1) End If End If End If End If Next Next e.DataRow("库存_分盘") = String.Join("+", ls.ToArray) End Select |
||||
-- 作者:实话实说 -- 发布时间:2015/12/3 11:08:00 -- 谢大红袍 |