Foxtable(狐表)用户栏目专家坐堂 → 移动平均单价计算代码求助


  共有4635人关注过本帖树形打印复制链接

主题:移动平均单价计算代码求助

帅哥哟,离线,有人找我吗?
段虎成
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
移动平均单价计算代码求助  发帖心情 Post By:2022/3/28 22:23:00 [只看该作者]

老师您好,求助一段代码,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:移动平均单价.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/28 22:51:00 [只看该作者]

业务的东西我不懂。请提供实例,然后说明具体的计算公式

 回到顶部
帅哥哟,离线,有人找我吗?
段虎成
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
  发帖心情 Post By:2022/3/29 8:27:00 [只看该作者]

老师您好。附件中有具体的公式,在文档的最后一行。谢谢。

 回到顶部
帅哥哟,离线,有人找我吗?
段虎成
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
  发帖心情 Post By:2022/3/29 8:42:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:移动加权平均案例_202203290840.zip

老师您好,已经上传案例及公式,请您帮忙,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:移动平均单价公式.rar


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/29 9:00:00 [只看该作者]

请以示例的数据说明一下,下面红色的值指的是哪个单元格的数据?比如计算SP002,本产品原有库存金额指的是哪个数据?

每个产品的【库存_单价】 = (本产品原有库存金额 + 本产品本次入库金额 ) /  (本产品原库存数量 + 本产品本次入库数量)
 
每个产品本次领用【出库_单价】 = 本产品本次领用前的库存单价


 回到顶部
帅哥哟,离线,有人找我吗?
段虎成
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
  发帖心情 Post By:2022/3/29 11:37:00 [只看该作者]

比如产品SP002: 
1、本产品原有库存金额指的是:列【库存—金额】(也就是在本产品入库或者出库时,本产品上一行中的列【库存-金额】对应的值)
2、本产品原库存数量指的是:列【库存—数量】(也就是在本产品入库或者出库时,本产品上一行中的列【库存-数量】对应的值)
3、本产品本次入库金额是:当前增加行对应的列【入库—金额】
4、本产品本次入库数量是:当前增加行对应的列【入库—数量】

5、本产品本次领用前的库存单价:列【库存—单价】(也就是在本产品入库或者出库时,本产品上一行中的列【库存-单价】对应的值)

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/29 12:03:00 [只看该作者]

参考流水账的用法即可:http://www.foxtable.com/webhelp/topics/2136.htm

 回到顶部
帅哥哟,离线,有人找我吗?
段虎成
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
  发帖心情 Post By:2022/3/29 13:18:00 [只看该作者]

' 即时库存数量计算
Select Case e.DataCol.Name
    Case "物料编号","入库_数量","出库_数量"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [物料编号] = '" & e.DataRow("物料编号") & "'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] <= " & dr("_SortKey") & " And [物料编号] = '" & dr("物料编号") & "'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(入库_数量)",Filter)
            Dim Val2 As Double = e.DataTable.Compute("Sum(出库_数量)",Filter)
            dr("库存_数量") = Val1 - Val2
        Next
        If e.DataCol.Name = "物料编号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [物料编号] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "[_SortKey] <= " & dr("_SortKey") & " And [物料编号] = '" & dr("物料编号") & "'"
                Dim Val1 As Double = e.DataTable.Compute("Sum(入库_数量)",Filter)
                Dim Val2 As Double = e.DataTable.Compute("Sum(出库_数量)",Filter)
                dr("库存_数量") = Val1 - Val2
            Next
        End If
End Select

这个数量我调出来了,但是单价的代码我没调出来。麻烦老师给添加一下单价部分代码图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/29 13:41:00 [只看该作者]

请按照流水账的用法。8楼的代码没有获取上一行

Select Case e.DataCol.Name
    Case "收入","支出"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
        If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
            e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出")
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") '这里的drs(i-1)就是上一行
        Next   
End Select

 回到顶部