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


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

主题:月结问题

帅哥哟,离线,有人找我吗?
狐狸爸爸
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/10/31 16:35:00 [只看该作者]

DataTables("月结").DataRows.Clear()
Dim lr As DataRow
For Each vals As String() In DataTables("明细").GetValues("材料|月")
    Dim dr As DataRow = DataTables("月结").AddNew()
    dr("材料") = vals(0)
    dr("月") = vals(1)
    If lr Is Nothing OrElse lr("材料") <> dr("材料") Then
        Dim qr As DataRow = DataTables("期初").Find("材料='" & vals(0) & "'")
        If qr IsNot Nothing Then
            dr("上月结存_数量") = qr("期初数量")
            dr("上月结存_金额") = qr("期初金额")
        End If
    Else
        dr("上月结存_数量")  = lr("本月结存_数量")
        dr("上月结存_金额") = lr("本月结存_金额")
    End If
    Dim filter As String = "材料='" & vals(0) & "' And 月='" & vals(1) & "'"
    dr("本月入仓_数量") = DataTables("明细").Compute("Sum(入仓数量)", filter)
    dr("本月出仓_数量") = DataTables("明细").Compute("Sum(入仓金额)", filter)
    dr("本月出仓_数量") = DataTables("明细").Compute("Sum(出仓数量)", filter)
    dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
    dr("本月加权平均单价") = (dr("上月结存_金额") + dr("本月入仓_金额")) /(dr("上月结存_数量")+dr("本月入仓_数量"))
    dr("本月出仓_金额") =dr("本月出仓_数量") * dr("本月加权平均单价")
    dr("本月结存_金额") = dr("本月加权平均单价") * dr("本月结存_数量")
    lr = dr
Next

[此贴子已经被作者于2016/10/31 16:37:37编辑过]

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望: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

 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2016/10/31 18:12:00 [只看该作者]

感谢狐爸和有点蓝。数据还有待验证,我想应该没问题,我晚上研究学习。有点小问题就是,不是按指定的月份月结,而是月结了所有月份。

图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2016/10/31 19:53:00 [只看该作者]

有点蓝的计算结果不对。狐爸的计算结果正确,但不能按指定月结算。

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/31 20:18:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2016/10/31 21:18:00 [只看该作者]

以下是引用有点蓝在2016/10/31 20:18:00的发言:
所有月份的计算都依赖于期初,所以必须从第一个月进行计算,否则后续的月份都无法计算。只能全部计算完毕然后进行筛选过滤掉不想显示的月份
知道了,谢谢。


 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2017/3/14 10:16:00 [只看该作者]

以上是所有月份的月结,需要加载表的全部数据,数据量大时显然不行。我想逐月月结,比如我要对1612月份进行月结,我就加载1612份的数据进行月结,但期初不好处理,有好的方案吗?

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2017/3/17 13:37:00 [只看该作者]

上传一个逐月月结案例,月结窗口中【逐月月结】按钮的代码如何引用期初表的月份

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:月结.foxdb

月结表:第一个月手工录入,以后每月月结后将月结表的本月结存导入到期初表

[此贴子已经被作者于2017/3/17 14:30:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
实话实说
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2017/3/17 14:29:00 [只看该作者]

 

[此贴子已经被作者于2017/3/17 14:31:11编辑过]

 回到顶部
总数 34 上一页 1 2 3 4 下一页