以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [已解决]仓库结转问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=35212)

--  作者:kolen
--  发布时间:2013/6/26 15:36:00
--  [已解决]仓库结转问题

      昨天用了DON的代码,简化了不少http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=35166&replyID=&skin=1

      现在碰到问题,“仓库总表”中有品号A1,A2,A3,  “采购入库明细表”中有A2,A11,A33,就是“采购入库表”中有部分品号在“仓库总表”中没有,有的品号如A2,的数据目前通过代码已经能够合计出数量、金额加到“仓库总表”中了,A11,A33这些品号没有时候(这因为这些品号是6月份刚新加的,仓库总账中的品号是5月31日结转的。所以做6月份结转的时候,要把这部分品号加到“仓库总账”的“期间6”部分),需要统计出数据,然后加到“仓库总表”中,这个如何操作好?请老师们帮助一下。(结账测试的时候,请选择6月份进行,因为我要把数据转到“仓库总账”的“期间6"的“入库数量”“入库金额”

 

下面有例子:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:仓库结转例子.table

[此贴子已经被作者于2013-6-26 19:01:08编辑过]

--  作者:kolen
--  发布时间:2013/6/26 16:20:00
--  
“仓库总表”中有品号A1,A2,A3,  “采购入库明细表”中有A2,A11,A33,(红色的品号没有和例子对上,只是大致描述一下意思。)
[此贴子已经被作者于2013-6-26 16:20:22编辑过]

--  作者:don
--  发布时间:2013/6/26 16:52:00
--  

Dim t1 As Table = Tables("仓库总表")
Dim dt1,dt2 As DataTable
Dim dr,dr1,dr2 As DataRow
Dim drs As List(of DataRow)
Dim flt,s1 As String
Dim Date1,Date2 As Date
Date1 = Tables("月末结账").Current("结账期_起")
Date2 = Tables("月末结账").Current("结账期_讫")
dt1 = DataTables("采购入库单明细表")
dt2 = DataTables("生产入库单明细表")
Dim dts As DataTable() ={dt1,dt2}
s1 = "[日期] >= #" & Date1 & "# And [日期]<= #" & Date2 & "#"
flt ="[期间] = \'" & Date1.Month & "\'"
t1.StopRedraw
For Each dt As DataTable In dts
    drs = dt.Select(s1)
    For Each dr  In drs
        dr1=t1.DataTable.Find(flt & " and [品号] = \'" & dr("品号") & " \'and [仓库] = \'" & dr("仓库") &  "\'")
        If dr1 Is Nothing Then
            dr2 = t1.DataTable.AddNew
            dr2("期间") = Date1.Month
            dr2("仓库") = dr("仓库")
            dr2("品号") = dr("品号")
        End If
    Next
Next


t1.Filter = flt
For Each r2 As Row In t1.Rows
    flt = s1 & " and [品号] = \'" & r2("品号") & " \'and [仓库] = \'" & r2("仓库") &  "\'"
    r2("入库数量") = dt1.Compute("Sum(数量)",flt) + dt2.Compute("Sum(数量)",flt)
    r2("入库金额") = dt1.Compute("Sum(金额)",flt) + dt2.Compute("Sum(金额)",flt)
Next
t1.ResumeRedraw
t1.DataTable.save

--  作者:kolen
--  发布时间:2013/6/26 17:31:00
--  

DON老师,你的代码我看的眼泪都要掉下来了。

图片点击可在新窗口打开查看

太佩服你了。这个思路我怎么没有想到呢,是我对Find,Select,Compute这些基本的方法掌握的不够熟练啊。

 


--  作者:石四
--  发布时间:2013/11/18 14:42:00
--  

这个例子很有示范性,前面只做了入库汇总,期初和期未怎么结转好像没有做.

我在上面的附件增加了一个出库明细表,希望楼群主,don及各位高手继续,让新手学习.

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:仓库结转例子.table