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


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

主题:月结问题

帅哥哟,离线,有人找我吗?
有点色
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/17 14:41:00 [只看该作者]

DataTables("月结").DataRows.Clear
Dim dt As DataTable = DataTables("明细")
Dim str As String = e.Form.Controls("月").Text
Dim d As Date = new Date(str.SubString(0, 4), str.SubString(4,2), 1)
For Each cl As String In dt.GetValues("材料", "月 = '" & str & "'")
    Dim dr As DataRow = DataTables("月结").AddNew
    dr("月") = str
    dr("材料") = cl
    Dim Filter As String = "材料 = '" & cl & "' And 月 = '" & str & "'"
   
    Dim dr1 As DataRow = DataTables("期初").Find("材料='" & cl & "' and 月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
    If dr1 IsNot Nothing Then
        dr("上月结存_数量") = dr1("期初数量")
        dr("上月结存_金额") = dr1("期初金额")
    End If
       
    dr("本月入仓_数量") = dt.Compute("Sum(入仓数量)",Filter)
    dr("本月入仓_金额") = dt.Compute("Sum(入仓金额)",Filter)
    dr("本月出仓_数量") = dt.Compute("Sum(出仓数量)",Filter)
    dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
    dr("本月加权平均单价") = (dr("上月结存_金额") + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
    dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
    dr("本月结存_金额") = dr("上月结存_金额") + dr("本月入仓_金额") - dr("本月出仓_金额")
   
Next

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


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

谢了,晚上回去验证。

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


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

以下月结代码有问题:比如A产品5月份盘点后录入了期初数据,6月份该产品没有发生进出,应该上月结存=本月结存=期初,但月结时根本没有该产品记录,不知错在哪?

DataTables("产品月结").DataRows.Clear
Dim dt As DataTable = DataTables("产品明细")
Dim str As String = e.Form.Controls("月").Text
Dim d As Date = new Date(str.SubString(0, 4), str.SubString(4,2), 1)
For Each cl As String In dt.GetValues("产品", "月 = '" & str & "'")
    Dim dr As DataRow = DataTables("产品月结").AddNew
    dr("月") = str
    dr("产品") = cl
    Dim Filter As String = "产品 = '" & cl & "' And 月 = '" & str & "'"
    
    Dim dr1 As DataRow = DataTables("产品期初").Find("产品 ='" & cl & "' and 月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
    If dr1 IsNot Nothing Then
        dr("上月结存") = dr1("期初数量")
    End If      
    dr("本月入仓") = dt.Compute("Sum(入仓数量)",Filter)
    dr("本月出仓") = dt.Compute("Sum(出仓数量)",Filter)
    dr("本月结存") = dr("上月结存") + dr("本月入仓") - dr("本月出仓")
Next

DataTables("产品月结").DeleteFor("产品 is Null") '字符行

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/2 10:26:00 [只看该作者]

DataTables("月结").DataRows.Clear
Dim dt As DataTable = DataTables("明细")
Dim str As String = e.Form.Controls("月").Text
Dim d As Date = new Date(str.SubString(0, 4), str.SubString(4,2), 1)
Dim ls As List(Of String) = dt.GetValues("材料", "月 = '" & str & "'")
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
For Each cl As String In ls

    Dim dr As DataRow = DataTables("月结").AddNew
    dr("月") = str
    dr("材料") = cl
    Dim Filter As String = "材料 = '" & cl & "' And 月 = '" & str & "'"
   
    Dim dr1 As DataRow = DataTables("期初").Find("材料='" & cl & "' and 月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
    If dr1 IsNot Nothing Then
        dr("上月结存_数量") = dr1("期初数量")
        dr("上月结存_金额") = dr1("期初金额")
    End If
   
    dr("本月入仓_数量") = dt.Compute("Sum(入仓数量)",Filter)
    dr("本月入仓_金额") = dt.Compute("Sum(入仓金额)",Filter)
    dr("本月出仓_数量") = dt.Compute("Sum(出仓数量)",Filter)
    dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
    dr("本月加权平均单价") = (dr("上月结存_金额") + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
    dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
    dr("本月结存_金额") = dr("上月结存_金额") + dr("本月入仓_金额") - dr("本月出仓_金额")
   
Next

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


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

谢了

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


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

在24楼代码中,明细表是由入库表和出库表合并得到的,我现在不想用明细表而直接用入库表和出库表,可以吗?

 回到顶部
帅哥哟,离线,有人找我吗?
天宇科技
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:472 积分:4025 威望:0 精华:0 注册:2018/5/13 15:18:00
  发帖心情 Post By:2022/7/3 9:39:00 [只看该作者]

跨越了5年


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


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

26楼求助

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


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

下面第一段代码是根据产品明细做的月结,产品明细表是由产品入库和产品入库表合并而成,我现在想直接用产品入库表和产品出库表做月结。貌似第二段代码模样,行吗?黄色背景的代码不知怎样写

第一段代码

DataTables("产品月结").DataRows.Clear
Dim dt As DataTable = DataTables("产品明细")
Dim str As String = e.Form.Controls("月").Text
Dim d As Date = new Date(str.SubString(0, 4), str.SubString(4,2), 1) '获取本月的第1天
Dim ls As List(Of String) = dt.GetValues("产品代码", "月 = '" & str & "'")
For Each s As String In DataTables("产品上月结存").GetValues("产品代码", "月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
'For Each s As String In DataTables("产品上月结存").GetValues("产品代码", "月 = '" & Format(d.AddMonths(0), "yyyyMM") & "'")
    If ls.Contains(s) = False Then
        ls.add(s)
    End If
Next
For Each cl As String In ls
    Dim dr As DataRow = DataTables("产品月结").AddNew
    dr("月") = str
    dr("产品代码") = cl
    Dim Filter As String = "产品代码 = '" & cl & "' And 月 = '" & str & "'" 
    Dim dr1 As DataRow = DataTables("产品上月结存").Find("产品代码 = '" & cl & "' and 月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
    'Dim dr1 As DataRow = DataTables("产品上月结存").Find("产品代码 = '" & cl & "' and 月 = '" & Format(d.AddMonths(0), "yyyyMM") & "'")
    If dr1 IsNot Nothing Then
        dr("上月结存") = dr1("上月结存")
    End If
    dr("本月入仓") = dt.Compute("Sum(入仓数量)",Filter)
    dr("本月出仓") = dt.Compute("Sum(出仓数量)",Filter)
    dr("本月结存") = dr("上月结存") + dr("本月入仓") - dr("本月出仓")
Next
第二段代码

DataTables("产品月结").DataRows.Clear
Dim dt1 As DataTable = DataTables("产品入库")
Dim dt2 As DataTable = DataTables("产品出库")
Dim str As String = e.Form.Controls("月").Text
Dim d As Date = new Date(str.SubString(0, 4), str.SubString(4,2), 1) '获取本月的第1天
Dim ls1 As List(Of String) = dt1.GetValues("产品代码", "月 = '" & str & "'")
Dim ls2 As List(Of String) = dt2.GetValues("产品代码", "月 = '" & str & "'")
For Each s As String In DataTables("产品上月结存").GetValues("产品代码", "月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
    If ls1.Contains(s) = False or ls2.Contains(s) = False Then
        ls.add(s)
    End If
Next
For Each cl As String In ls
    Dim dr As DataRow = DataTables("产品月结").AddNew
    dr("月") = str
    dr("产品代码") = cl
    Dim Filter As String = "产品代码 = '" & cl & "' And 月 = '" & str & "'" 
    Dim dr1 As DataRow = DataTables("产品上月结存").Find("产品代码 = '" & cl & "' and 月 = '" & Format(d.AddMonths(-1), "yyyyMM") & "'")
    'Dim dr1 As DataRow = DataTables("产品上月结存").Find("产品代码 = '" & cl & "' and 月 = '" & Format(d.AddMonths(0), "yyyyMM") & "'")
    If dr1 IsNot Nothing Then
        dr("上月结存") = dr1("上月结存")
    End If
    dr("本月入仓") = dt1.Compute("Sum(入仓数量)",Filter)
    dr("本月出仓") = dt2.Compute("Sum(出仓数量)",Filter)
    dr("本月结存") = dr("上月结存") + dr("本月入仓") - dr("本月出仓")
Next

[此贴子已经被作者于2022/7/3 21:17:08编辑过]

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


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

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