Foxtable(狐表)用户栏目专家坐堂 → 月结问题


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

主题:月结问题

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107751 积分:548094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/29 9:41:00 [显示全部帖子]

业务的东西我不懂,月加权平均单价的数学公式应该是怎样的?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107751 积分:548094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/29 15:04:00 [显示全部帖子]

本月(201609)的上月结存金额是不是等于上一个月(201608)数据的本月结存金额?还是又要通过什么公式进行计算?
[此贴子已经被作者于2016/10/29 15:04:25编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107751 积分:548094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/31 17:28:00 [显示全部帖子]

DataTables("材料月结").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("材料明细").GetValues("月|材料","","月,材料") ',"月 >= '" & e.Form.Controls("起始月").Text & "' And 月 <= '" & e.Form.Controls("截止月").Text & "' ")
Dim clist As new Dictionary(of String,DataRow)
Dim dt As DataTable = DataTables("材料明细")
Dim prerow As DataRow
For Each Ary As String() In Arys
    Dim dr As DataRow = DataTables("材料月结").AddNew
    dr("月") = Ary(0)
    dr("材料") = Ary(1)
    Dim Filter As String = "材料 = '" & Ary(1) & "'"
    If clist.ContainsKey(Ary(1)) Then
        dr("上月结存_数量") = clist(Ary(1))("本月结存_数量")
        dr("上月结存_金额") = clist(Ary(1))("本月结存_金额")
    Else
        Dim dr1 As DataRow = DataTables("期初").Find("材料='" & Ary(1) & "'")
        If dr1 IsNot Nothing Then
            dr("上月结存_数量") = dr1("期初数量")
            dr("上月结存_金额") = dr1("期初金额")
        End If
        clist.Add(Ary(1),dr)
    End If
    
    dr("本月入仓_数量") = dt.Compute("Sum(入仓数量)",Filter & " And 月 = '" & dr("月") & "'")
    dr("本月入仓_金额") = dt.Compute("Sum(入仓金额)",Filter & " And 月 = '" & dr("月") & "'")
    dr("本月出仓_数量") = dt.Compute("Sum(出仓数量)",Filter & " And 月 = '" & dr("月") & "'")
    dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
    dr("本月加权平均单价") = (dr("上月结存_金额") + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
    dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
    dr("本月结存_金额") = dr("上月结存_金额") + dr("本月入仓_金额") - dr("本月出仓_金额")
    clist(Ary(1)) = dr
Next

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107751 积分:548094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/31 20:18:00 [显示全部帖子]

所有月份的计算都依赖于期初,所以必须从第一个月进行计算,否则后续的月份都无法计算。只能全部计算完毕然后进行筛选过滤掉不想显示的月份

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107751 积分:548094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/14 12:00:00 [显示全部帖子]

那就按顺序逐月月结,然后保存结果,期初取上个月月结后的保存的结果

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107751 积分:548094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/3 21:28:00 [显示全部帖子]

Dim ls As List(Of String) = dt1.GetValues("产品代码", "月 = '" & str & "'")
for each s as string in dt2.GetValues("产品代码", "月 = '" & str & "'")
    If ls.Contains(s) = False Then
        ls.add(s)
    End If
next
For Each s As String In DataTables("产品上月结存").GetValues("产品代码", "月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
    If ls.Contains(s) = False Then
        ls.add(s)
    End If
Next

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107751 积分:548094 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/7/7 21:39:00 [显示全部帖子]

学会调试:http://www.foxtable.com/webhelp/topics/1485.htm,看哪一句代码出错

 回到顶部