Foxtable(狐表)用户栏目专家坐堂 → [求助]修改材料月结窗口中(月份入.出.存统计按钮代码)


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

主题:[求助]修改材料月结窗口中(月份入.出.存统计按钮代码)

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


加好友 发短信
等级:二尾狐 帖子:520 积分:4312 威望:0 精华:0 注册:2012/11/28 16:03:00
[求助]修改材料月结窗口中(月份入.出.存统计按钮代码)  发帖心情 Post By:2015/12/18 10:33:00 [只看该作者]

老师你好,求助修改[材料月结]窗口中(月份入.出.存统计按钮代码)

材料月结表涉及"材料入库明细表","材料出库明细表","材料期初库存明细表"

****是否涉及到"物料信息表"

问题反馈如下:"材料期初库存明细表"有初始数据,但选择相应月份,按统计按钮,"材料月结表"查不到相关数据(材料编号,材料名称,规格型号及数量等)

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


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/18 10:34:00 [只看该作者]

密码

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


加好友 发短信
等级:二尾狐 帖子:520 积分:4312 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/18 10:46:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:材料期初库存明细表.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/18 10:47:00 [只看该作者]

密码

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


加好友 发短信
等级:二尾狐 帖子:520 积分:4312 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/18 10:47:00 [只看该作者]

80693528

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/18 11:19:00 [只看该作者]

Dim st As Date = Date.Now '用于计算时间

Dim s As String = e.Form.Controls("起始月").Value
If s <> "" Then
    Tables("材料月结").StopRedraw() '停止重绘
    DataTables("材料月结").DataRows.Clear
    Dim dt_in As List(Of DataRow)
    dt_in = DataTables("材料入库明细表").Select("材料编号 is not null", "材料编号,材料名称,规格型号,材料_大类,材料_中类,月份") '排序取出 入仓 全部数据
    Dim drs_init As List(Of DataRow) = DataTables("材料期初库存明细表").Select("月份 <= " & s)
   
    Dim r As Row
    Dim sum_curr_money, sum_prev_money As Double
    Dim sum_curr_count, sum_prev_count As Single
   
    r = Tables("材料月结").AddNew
    r("材料编号") = dt_in(0)("材料编号")
    r("材料名称") = dt_in(0)("材料名称")
    r("规格型号") = dt_in(0)("规格型号")
    r("材料_大类") = dt_in(0)("材料_大类")
    r("材料_中类") = dt_in(0)("材料_中类")
   
    If dt_in(0)("月份") < s Then '之前月
        sum_prev_count = sum_prev_count + dt_in(0)("数量")
        sum_prev_money = sum_prev_money + dt_in(0)("不含税金额")
    Else If dt_in(0)("月份") = s Then '本月份
        sum_curr_money = sum_curr_money + dt_in(0)("不含税金额")
        sum_curr_count = sum_curr_count + dt_in(0)("数量")
    End If
   
    For i As Single = 1 To dt_in.Count - 1 '写入型号和规格,同时统计入仓数量和金额
        If dt_in(i)("材料编号") <> dt_in(i-1)("材料编号") OrElse dt_in(i)("材料名称") <> dt_in(i-1)("材料名称") OrElse dt_in(i)("规格型号") <> dt_in(i-1)("规格型号") OrElse dt_in(i)("材料_大类") <> dt_in(i-1)("材料_大类") OrElse dt_in(i)("材料_中类") <> dt_in(i-1)("材料_中类") Then '不同产品
            r("本月入库_数量") = sum_curr_count
            r("本月入库_不含税金额") = sum_curr_money
            r("月初结存_数量") = sum_prev_count '暂存
            r("月初结存_不含税金额") = sum_prev_money '暂存
           
            r = Tables("材料月结").AddNew '插入新数据
            r("材料编号") = dt_in(i)("材料编号")
            r("材料名称") = dt_in(i)("材料名称")
            r("规格型号") = dt_in(i)("规格型号")
            r("材料_大类") = dt_in(i)("材料_大类")
            r("材料_中类") = dt_in(i)("材料_中类")
           
            sum_curr_money = 0
            sum_curr_count = 0
            sum_prev_count = 0
            sum_prev_money = 0
        End If
       
        If dt_in(i)("月份") < s Then '之前月
            sum_prev_count = sum_prev_count + dt_in(i)("数量")
            sum_prev_money = sum_prev_money + dt_in(i)("不含税金额")
        Else If dt_in(i)("月份") = s Then '本月份
            sum_curr_money = sum_curr_money + dt_in(i)("不含税金额")
            sum_curr_count = sum_curr_count + dt_in(i)("数量")
        End If
    Next
    For Each dr As DataRow In drs_init
        If DataTables("材料入库明细表").find("材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "'") Is Nothing Then
            Dim nr = Tables("材料月结").AddNew
            nr("材料编号") = dr("材料编号")
            nr("材料名称") = dr("材料名称")
            nr("规格型号") = dr("规格型号")
            nr("材料_大类") = dr("材料_大类")
            nr("材料_中类") = dr("材料_中类")
        End If
       
    Next
    r("本月入库_数量") = sum_curr_count
    r("本月入库_不含税金额") = sum_curr_money
    r("月初结存_数量") = sum_prev_count '暂存
    r("月初结存_不含税金额") = sum_prev_money '暂存
   
    'MessageBox.Show("复制型号和规格耗时: " & (Date.Now - st).TotalSeconds & "秒")
    'st = Date.Now '用于计算时间
    For Each dr As DataRow In DataTables("材料月结").DataRows '填充统计数据
       
        sum_curr_count = 0 '累计本月出仓数量
        sum_prev_count = 0 '累计之前出仓数量
        sum_curr_money = 0 '累计之前出仓金额
        sum_prev_money = 0 '累计之前出仓金额
       
        Dim drs_out As List(Of DataRow)
        Dim filter As String = "材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "'"
        drs_out = DataTables("材料出库明细表").Select(filter, "月份") '排序取出 出仓 全部数据
       
       
        For Each dr_out As DataRow In drs_out
           
            If dr_out("月份") < s Then
                sum_prev_count = sum_prev_count + dr_out("数量")
                sum_prev_money = sum_prev_money + dr_out("出库不含税金额")
            Else If dr_out("月份") = s Then
                sum_curr_count = sum_curr_count + dr_out("数量")
                sum_curr_money = sum_curr_money + dr_out("出库不含税金额")
            Else
                Exit For
            End If
        Next
        Dim qcsl As Single = DataTables("材料期初库存明细表").compute("sum(数量)", "材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "' and 月份 <= " & s)
        Dim qcsl1 As Single = DataTables("材料期初库存明细表").compute("sum(不含税金额)", "材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "' and 月份 <= " & s)
        Dim sum_in_prev_count As Single = dr("月初结存_数量") '从表中取出暂存数据
        Dim sum_in_prev_money As Double = dr("月初结存_不含税金额") '从表中取出暂存数据
       
       
        dr("本月出库_数量") = sum_curr_count
        dr("本月出库_不含税金额") = sum_curr_money
       
        dr("月初结存_数量") = sum_in_prev_count - sum_prev_count + qcsl
        dr("月初结存_不含税金额") = sum_in_prev_money - sum_prev_money + qcsl1
       
        dr("月末结存_数量") = dr("月初结存_数量") + dr("本月入库_数量") - dr("本月出库_数量")
        dr("月末结存_不含税金额") = dr("月初结存_不含税金额") + dr("本月入库_不含税金额") - dr("本月出库_不含税金额")
        dr("加权平均单价") = (dr("月初结存_不含税金额") + dr("本月入库_不含税金额"))/(dr("月初结存_数量") + dr("本月入库_数量"))
       
        ''dr("本月出库_不含税金额") = dr("加权平均单价") * dr("本月出库_数量")
    Next
    Tables("材料月结").ResumeRedraw()
End If

'MessageBox.Show("统计和写入耗时: " & (Date.Now - st).TotalSeconds & "秒")
'
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("材料月结", "材料_大类|材料_中类|材料名称|规格型号")
trv.Nodes.Insert("显示所有行",0)


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


加好友 发短信
等级:二尾狐 帖子:520 积分:4312 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/18 14:09:00 [只看该作者]

老师你好,又有新问题了,"材料出库明细表"中[材料编号],[材料名称],[规格型号],等列由于在"材料入库明细表"找不到相关数据,所以"材料月结"表不显示[材料编号],[材料名称],[规格型号]等列出库数据,麻烦老师修改一下,谢谢!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/18 14:20:00 [只看该作者]

Dim st As Date = Date.Now '用于计算时间

Dim s As String = e.Form.Controls("起始月").Value
If s <> "" Then
    Tables("材料月结").StopRedraw() '停止重绘
    DataTables("材料月结").DataRows.Clear
    Dim drs_out As List(Of DataRow)
    Dim dt_in As List(Of DataRow)
    dt_in = DataTables("材料入库明细表").Select("材料编号 is not null", "材料编号,材料名称,规格型号,材料_大类,材料_中类,月份") '排序取出 入仓 全部数据
    drs_out = DataTables("材料出库明细表").Select("材料编号 is not null", "材料编号,材料名称,规格型号,材料_大类,材料_中类,月份") '排序取出 入仓 全部数据
    Dim drs_init As List(Of DataRow) = DataTables("材料期初库存明细表").Select("月份 <= " & s)
   
    Dim r As Row
    Dim sum_curr_money, sum_prev_money As Double
    Dim sum_curr_count, sum_prev_count As Single
   
    r = Tables("材料月结").AddNew
    r("材料编号") = dt_in(0)("材料编号")
    r("材料名称") = dt_in(0)("材料名称")
    r("规格型号") = dt_in(0)("规格型号")
    r("材料_大类") = dt_in(0)("材料_大类")
    r("材料_中类") = dt_in(0)("材料_中类")
   
    If dt_in(0)("月份") < s Then '之前月
        sum_prev_count = sum_prev_count + dt_in(0)("数量")
        sum_prev_money = sum_prev_money + dt_in(0)("不含税金额")
    Else If dt_in(0)("月份") = s Then '本月份
        sum_curr_money = sum_curr_money + dt_in(0)("不含税金额")
        sum_curr_count = sum_curr_count + dt_in(0)("数量")
    End If
   
    For i As Single = 1 To dt_in.Count - 1 '写入型号和规格,同时统计入仓数量和金额
        If dt_in(i)("材料编号") <> dt_in(i-1)("材料编号") OrElse dt_in(i)("材料名称") <> dt_in(i-1)("材料名称") OrElse dt_in(i)("规格型号") <> dt_in(i-1)("规格型号") OrElse dt_in(i)("材料_大类") <> dt_in(i-1)("材料_大类") OrElse dt_in(i)("材料_中类") <> dt_in(i-1)("材料_中类") Then '不同产品
            r("本月入库_数量") = sum_curr_count
            r("本月入库_不含税金额") = sum_curr_money
            r("月初结存_数量") = sum_prev_count '暂存
            r("月初结存_不含税金额") = sum_prev_money '暂存
           
            r = Tables("材料月结").AddNew '插入新数据
            r("材料编号") = dt_in(i)("材料编号")
            r("材料名称") = dt_in(i)("材料名称")
            r("规格型号") = dt_in(i)("规格型号")
            r("材料_大类") = dt_in(i)("材料_大类")
            r("材料_中类") = dt_in(i)("材料_中类")
           
            sum_curr_money = 0
            sum_curr_count = 0
            sum_prev_count = 0
            sum_prev_money = 0
        End If
       
        If dt_in(i)("月份") < s Then '之前月
            sum_prev_count = sum_prev_count + dt_in(i)("数量")
            sum_prev_money = sum_prev_money + dt_in(i)("不含税金额")
        Else If dt_in(i)("月份") = s Then '本月份
            sum_curr_money = sum_curr_money + dt_in(i)("不含税金额")
            sum_curr_count = sum_curr_count + dt_in(i)("数量")
        End If
    Next
    For Each dr As DataRow In drs_init
        If DataTables("材料月结").find("材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "'") Is Nothing Then
            Dim nr = Tables("材料月结").AddNew
            nr("材料编号") = dr("材料编号")
            nr("材料名称") = dr("材料名称")
            nr("规格型号") = dr("规格型号")
            nr("材料_大类") = dr("材料_大类")
            nr("材料_中类") = dr("材料_中类")
        End If
    Next
    For Each dr As DataRow In drs_out
        If DataTables("材料月结").find("材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "'") Is Nothing Then
            Dim nr = Tables("材料月结").AddNew
            nr("材料编号") = dr("材料编号")
            nr("材料名称") = dr("材料名称")
            nr("规格型号") = dr("规格型号")
            nr("材料_大类") = dr("材料_大类")
            nr("材料_中类") = dr("材料_中类")
        End If
    Next
    r("本月入库_数量") = sum_curr_count
    r("本月入库_不含税金额") = sum_curr_money
    r("月初结存_数量") = sum_prev_count '暂存
    r("月初结存_不含税金额") = sum_prev_money '暂存
   
    'MessageBox.Show("复制型号和规格耗时: " & (Date.Now - st).TotalSeconds & "秒")
    'st = Date.Now '用于计算时间
    For Each dr As DataRow In DataTables("材料月结").DataRows '填充统计数据
       
        sum_curr_count = 0 '累计本月出仓数量
        sum_prev_count = 0 '累计之前出仓数量
        sum_curr_money = 0 '累计之前出仓金额
        sum_prev_money = 0 '累计之前出仓金额
       
       
        Dim filter As String = "材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "'"
        drs_out = DataTables("材料出库明细表").Select(filter, "月份") '排序取出 出仓 全部数据
       
       
        For Each dr_out As DataRow In drs_out
           
            If dr_out("月份") < s Then
                sum_prev_count = sum_prev_count + dr_out("数量")
                sum_prev_money = sum_prev_money + dr_out("出库不含税金额")
            Else If dr_out("月份") = s Then
                sum_curr_count = sum_curr_count + dr_out("数量")
                sum_curr_money = sum_curr_money + dr_out("出库不含税金额")
            Else
                Exit For
            End If
        Next
        Dim qcsl As Single = DataTables("材料期初库存明细表").compute("sum(数量)", "材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "' and 月份 <= " & s)
        Dim qcsl1 As Single = DataTables("材料期初库存明细表").compute("sum(不含税金额)", "材料名称 = '" & dr("材料名称") & "' And 规格型号 = '" & dr("规格型号") & "' and 月份 <= " & s)
        Dim sum_in_prev_count As Single = dr("月初结存_数量") '从表中取出暂存数据
        Dim sum_in_prev_money As Double = dr("月初结存_不含税金额") '从表中取出暂存数据
       
       
        dr("本月出库_数量") = sum_curr_count
        dr("本月出库_不含税金额") = sum_curr_money
       
        dr("月初结存_数量") = sum_in_prev_count - sum_prev_count + qcsl
        dr("月初结存_不含税金额") = sum_in_prev_money - sum_prev_money + qcsl1
       
        dr("月末结存_数量") = dr("月初结存_数量") + dr("本月入库_数量") - dr("本月出库_数量")
        dr("月末结存_不含税金额") = dr("月初结存_不含税金额") + dr("本月入库_不含税金额") - dr("本月出库_不含税金额")
        dr("加权平均单价") = (dr("月初结存_不含税金额") + dr("本月入库_不含税金额"))/(dr("月初结存_数量") + dr("本月入库_数量"))
       
        ''dr("本月出库_不含税金额") = dr("加权平均单价") * dr("本月出库_数量")
    Next
    Tables("材料月结").ResumeRedraw()
End If

'MessageBox.Show("统计和写入耗时: " & (Date.Now - st).TotalSeconds & "秒")
'
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("材料月结", "材料_大类|材料_中类|材料名称|规格型号")
trv.Nodes.Insert("显示所有行",0)


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


加好友 发短信
等级:二尾狐 帖子:520 积分:4312 威望:0 精华:0 注册:2012/11/28 16:03:00
  发帖心情 Post By:2015/12/18 14:41:00 [只看该作者]

谢谢红袍老师

 回到顶部