Foxtable(狐表)用户栏目专家坐堂 → 我有个项目 里面有期初库存 进货 退货 要求是求某段时间的进销存汇总?现在问题来了


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

主题:我有个项目 里面有期初库存 进货 退货 要求是求某段时间的进销存汇总?现在问题来了

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/7/22 10:19:00 [只看该作者]

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



万分感谢 

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/7/22 10:57:00 [只看该作者]

例子已经上传了 麻烦狐爸帮我看一下 是不是很慢 

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/7/22 12:55:00 [只看该作者]

11楼的列子 运行很慢


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


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

1、少用sqlcompute等

 

2、筛选条件,尽量少用日期

 

Dim filter1 As String
filter1="日期 >= #" & e.Form.Controls("startdate").value & "# " & " And 日期 <= #" & e.Form.Controls("enddate").value & "#"
Dim bd1 As New SQLGroupTableBuilder("统计表1","进货单明细")
Dim b As New SQLGroupTableBuilder("统计表1","订单")
bd1.ConnectionName = "wjhansdata"
Dim dt1 As fxDataSource
bd1.Groups.AddDef("产品名称") '根据型号分组
bd1.Groups.AddDef("仓库") '根据型号分组
bd1.Totals.AddDef("数量","进货_数量") '对数量进行统计
bd1.Totals.AddDef("金额","进货_金额") '对金额进行统计
bd1.Filter = filter1
dt1 = bd1.BuildDataSource()

Dim bd2 As New SqlGroupTableBuilder("统计表2","销售单明细")
bd2.ConnectionName = "wjhansdata"
Dim dt2  As fxDataSource
bd2.Groups.AddDef("产品名称") '根据型号分组
bd2.Groups.AddDef("仓库") '根据型号分组
bd2.Totals.AddDef("数量","销售_数量") '对数量进行统计
bd2.Totals.AddDef("金额","销售_金额") '对金额进行统计
bd2.Totals.AddDef("成本","销售_成本") '对金额进行统计
bd2.Filter = filter1
dt2 = bd2.BuildDataSource()

 


Dim bd5 As New GroupTableBuilder("统计表5",DataTables("期初库存"))
Dim dt5 As fxDataSource
bd5.Groups.AddDef("产品名称") '根据型号分组
bd5.Groups.AddDef("仓库") '根据型号分组
bd5.Totals.AddDef("期初数量","期初_数量") '对数量进行统计
bd5.Totals.AddDef("期初金额","期初_金额") '对金额进行统计
dt5 = bd5.BuildDataSource()

Dim nms As String() = {"产品名称","仓库"} '指定连接列
dt5.Combine(nms,dt1,nms) '将销售统计数据组合到进货统计数据
dt5.Combine(nms,dt2,nms) '将退货统计数据组合到进货统计数据


Tables("区间进销存_Table1").DataSource = dt5 '将统计结果绑定到Table

DataTables("进货单明细").LoadFilter = ""
DataTables("进货单明细").Load
DataTables("销售单明细").loadFilter = ""
DataTables("销售单明细").load
msgbox(1)
Dim dt As DataTable = DataTables("区间进销存_Table1")
For Each dr As DataRow In dt.DataRows
    Dim filter2 As String
    '  filter2="产品名称 = '" & dr("产品名称") & "' and 颜色 = '" & dr("颜色") & "' and 仓库 = '" & dr("仓库") & "' and 日期 >= #" & e.Form.Controls("startdate").value & "# " & " And 日期 <= #" & e.Form.Controls("enddate").value & "#"
    filter2="产品名称 = '" & dr("产品名称") & "' and 仓库 = '" & dr("仓库") & "'" ' And 日期 < #" & e.Form.Controls("startdate").value & "#"
   
    Dim drs As List(Of DataRow) = DataTables("进货单明细").Select(filter2)
    Dim s1 As Double = 0
    Dim s5 As Double = 0
    For Each cdr As DataRow In drs
        If cdr("日期") < e.Form.Controls("startdate").value Then
            s1 += cdr("数量")
            s5 += cdr("金额")
        End If
    Next
    drs = DataTables("销售单明细").Select(filter2)
    Dim s2 As Double = 0
    Dim s6 As Double = 0
    For Each cdr As DataRow In drs
        If cdr("日期") < e.Form.Controls("startdate").value Then
            s1 += cdr("数量")
            s5 += cdr("金额")
        End If
    Next
    dr("期初_数量") += s1 - s2
   
    dr("期初_金额") += s5+s6
Next
'
msgbox(2)
With DataTables("区间进销存_Table1").DataCols  '用表达式列计算库存数据
    .Add("库存_数量",Gettype(Integer), "IsNull([期初_数量],0)+ IsNull([进货_数量],0) - ISNULL([销售_数量],0) ")
    .Add("库存_金额",Gettype(Double), "IsNull([期初_金额],0)+ IsNull([进货_金额],0) - ISNULL([销售_成本],0) ")
End With
'
Tables("区间进销存_table1").Cols("期初_数量").GrandTotal = True '指定要合计的列
Tables("区间进销存_table1").Cols("期初_金额").GrandTotal = True
Tables("区间进销存_table1").Cols("进货_数量").GrandTotal = True
Tables("区间进销存_table1").Cols("进货_金额").GrandTotal = True
Tables("区间进销存_table1").Cols("销售_数量").GrandTotal = True
Tables("区间进销存_table1").Cols("销售_金额").GrandTotal = True
Tables("区间进销存_table1").Cols("销售_成本").GrandTotal = True


Tables("区间进销存_table1").Cols("库存_数量").GrandTotal = True
Tables("区间进销存_table1").Cols("库存_金额").GrandTotal = True
Tables("区间进销存_table1").GrandTotal = True '显示合计模式

 

[此贴子已经被作者于2016/7/22 13:02:09编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/7/22 13:07:00 [只看该作者]

谢谢 现在速度飞快 

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


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2016/7/23 23:09:00 [只看该作者]

发现问题了  
如果进货的产品名称 在期初数中没有的话 任意取某个日期 结果就会出错 

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


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


加好友 发短信
等级:五尾狐 帖子:1131 积分:8199 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2016/10/14 21:16:00 [只看该作者]

备份

 回到顶部
总数 17 上一页 1 2