以文本方式查看主题

-  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=147872)

--  作者:冷泉
--  发布时间:2020/3/26 11:14:00
--  加载数据计算
我这个库存数量计算有点问题,入库表只加载当月的,之前月份的数据,库存表那里无法计算,代码应该怎样修改了,麻烦老师指导一下,谢谢

If e.DataCol.Name = "商品编号" Then
    e.DataRow("入库_数量") = DataTables("入库表").Compute("Sum(数量)","[商品编号] = \'" & e.NewValue & "\'")
    e.DataRow("出库_数量") = DataTables("出库表").Compute("Sum(数量)","[商品编号] = \'" & e.NewValue & "\'")
    e.DataRow("期初库存") = DataTables("商品资料").Compute("Sum(期初库存)","[商品编号] = \'" & e.NewValue & "\'")
        e.DataRow("入库_均价") = DataTables("入库表").Compute("sum(金额)","[商品编号] =\'" & e.DataRow("商品编号") & "\' and 金额 <> 0") / DataTables("入库表").Compute("sum(数量)","[商品编号] =\'" & e.DataRow("商品编号") & "\' and 数量 <> 0")
        e.DataRow("出库_均价") = DataTables("出库表").Compute("sum(金额)","[商品编号] =\'" & e.DataRow("商品编号") & "\' and 金额 <> 0") / DataTables("出库表").Compute("sum(数量)","[商品编号] =\'" & e.DataRow("商品编号") & "\' and 数量 <> 0")
End If

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "入库_数量","出库_数量","期初库存"
        e.DataRow.save
        dr("库存_数量") = dr("期初库存") + dr("入库_数量") - dr("出库_数量")
        dr.save()
        If dr IsNot Nothing Then
        DataTables("库存表").DataCols("商品编号").RaiseDataColChanged(dr)\'
        End If
End Select

--  作者:冷泉
--  发布时间:2020/3/26 11:23:00
--  
加下面这个全部加载代码可以计算,但是速度太慢了
DataTables("入库表").LoadFilter=""
DataTables("入库表").Load
DataTables("出库表").LoadFilter=""
DataTables("出库表").Load


--  作者:有点蓝
--  发布时间:2020/3/26 11:26:00
--  
既然都已经有期初库存,为什么还要计算之前月份的数据?期初库存不应该是上个月的月末库存吗?期初库存不是按月结存的?
--  作者:冷泉
--  发布时间:2020/3/26 11:43:00
--  
额,没有每个月进行结转,统计的总的汇总数量和实时库存数量
--  作者:有点蓝
--  发布时间:2020/3/26 13:28:00
--  
那么多长时间结转一次。Compute改为sqlCompute,加上上次结转时间做条件
--  作者:冷泉
--  发布时间:2020/3/26 13:57:00
--  


我在表的afterLoad事件,加了下面这个代码,切换页面可以自动重置列了

e.DataTable.DataCols("商品编号").RaiseDataColChanged()