以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  我有个项目 里面有期初库存 进货 退货 要求是求某段时间的进销存汇总?现在问题来了  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=83135)

--  作者:jswjyjf
--  发布时间:2016/4/1 11:12:00
--  我有个项目 里面有期初库存 进货 退货 要求是求某段时间的进销存汇总?现在问题来了
我有个项目 里面有期初库存 进货 退货 要求是求某段时间的进销存汇总?现在问题来了

如果不分期限 是可以的,求某段时间到某段时间 期初数 就不对了 ,如何获取期初数 再进行计算 
项目如下
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:组合统计结果.foxdb





--  作者:大红袍
--  发布时间:2016/4/1 11:19:00
--  

1、你期初表的数据是哪个时间范围的值啊?

 

2、期初的数量,就统计日期之前的进货、退货、销售,然后加减就是答案啊。


--  作者:jswjyjf
--  发布时间:2016/4/1 13:35:00
--  
期初就是开始建帐的期初数 就是最早的数值
--  作者:大红袍
--  发布时间:2016/4/1 14:33:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:组合统计结果.foxdb


--  作者:jswjyjf
--  发布时间:2016/4/1 15:36:00
--  
谢谢
--  作者:jswjyjf
--  发布时间:2016/7/22 9:04:00
--  
你好 4楼的代码 其中取期初数
Dim dt As DataTable = DataTables("窗口1_Table1")
For Each dr As DataRow In dt.DataRows
    Dim filter2 As String = "名称 = \'" & dr("名称") & "\' and 颜色 = \'" & dr("颜色") & "\' and 仓库 = \'" & dr("仓库") & "\' and 日期 < #" & d & "#"
    Dim s1 As Double = DataTables("进货单").Compute("sum(数量)", filter2)
    Dim s2 As Double = DataTables("销售单").Compute("sum(数量)", filter2)
    Dim s3 As Double = DataTables("退货单").Compute("sum(数量)", filter2)
    dr("期初_数量") += s1 - s2 - s3
    Dim s4 As Double = DataTables("进货单").Compute("sum(金额)", filter2)
    Dim s5 As Double = DataTables("销售单").Compute("sum(金额)", filter2)
    Dim s6 As Double = DataTables("退货单").Compute("sum(金额)", filter2)
    dr("期初_金额") += s4 - s5 - s6
Next


如果库存表 销售单 进货单 退货单 记录数很多 
上面的代码 运行速度很慢 要等它了 ,有没有好办法

--  作者:大红袍
--  发布时间:2016/7/22 9:15:00
--  

把日期条件去掉,看能不能快

 

Dim dt As DataTable = DataTables("窗口1_Table1")

For Each dr As DataRow In dt.DataRows
    Dim filter2 As String = "名称 = \'" & dr("名称") & "\' and 颜色 = \'" & dr("颜色") & "\' and 仓库 = \'" & dr("仓库") & "\'"
    Dim s1 As Double = DataTables("进货单").Compute("sum(数量)", filter2)
    Dim s2 As Double = DataTables("销售单").Compute("sum(数量)", filter2)
    Dim s3 As Double = DataTables("退货单").Compute("sum(数量)", filter2)
    dr("期初_数量") += s1 - s2 - s3
    Dim s4 As Double = DataTables("进货单").Compute("sum(金额)", filter2)
    Dim s5 As Double = DataTables("销售单").Compute("sum(金额)", filter2)
    Dim s6 As Double = DataTables("退货单").Compute("sum(金额)", filter2)
    dr("期初_金额") += s4 - s5 - s6
Next

--  作者:jswjyjf
--  发布时间:2016/7/22 9:38:00
--  
没有区别 还是一样的 运行慢 可能是循环中用compute 这个不太好,有没有好的方法
--  作者:jswjyjf
--  发布时间:2016/7/22 9:50:00
--  
我思路是有的 就是不会写代码 
方法是 先生成新的期初余额表 然后用这个期初数去替代第二只表的期初余额

--  作者:大红袍
--  发布时间:2016/7/22 10:04:00
--  
 上传实例。计算不可能慢。