以文本方式查看主题

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

--  作者:qhczy
--  发布时间:2014/8/18 12:38:00
--  流水账数字不准----开发版
仅对表中已有数据进行流水账,为什么库存数字不准呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:流水账.zip

[此贴子已经被作者于2014-8-18 12:38:06编辑过]

--  作者:qhczy
--  发布时间:2014/8/18 13:38:00
--  
别沉下去了,着急啊!
--  作者:blackzhu
--  发布时间:2014/8/18 14:10:00
--  
重置列一下
--  作者:有点甜
--  发布时间:2014/8/18 14:16:00
--  

 看了一下,不是准确的么?

 

 你设置的统计条件是这个 [名称] = \'" & mr("名称") & "\' And [型号] = \'" & mr("型号") & "\'  and 状态 = \'" & mr("状态") & "\'"

 

 那么你就要对应的去分类查看和计算一下,代码没有问题。


--  作者:qhczy
--  发布时间:2014/8/18 14:27:00
--  

表中的数据被锁定,不变化的情况下.产生流水


--  作者:有点甜
--  发布时间:2014/8/18 14:53:00
--  
以下是引用qhczy在2014-8-18 14:27:00的发言:

表中的数据被锁定,不变化的情况下.产生流水

 

不明白你想说什么,代码没有错,流水数据也正确。


--  作者:qhczy
--  发布时间:2014/8/18 15:33:00
--  

Select Case e.DataCol.Name
    Case "名称","型号","状态","入库","出库","退货"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & "  And [名称] = \'" & mr("名称") & "\' And [型号] = \'" & mr("型号") & "\' and 状态 = \'" & mr("状态") & "\'")
        If dr Is Nothing Then
            mr("库存数量") = mr("入库") - mr("出库")+ mr("退货")
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [名称] = \'" & mr("名称") & "\' And [型号] = \'" & mr("型号") & "\'  and 状态 = \'" & mr("状态") & "\'")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("库存数量") = drs(i-1)("库存数量") + drs(i)("入库") - drs(i)("出库")+ drs(i)("退货")
        Next
        If e.DataCol.Name = "名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [名称] = \'" & mr("名称") & "\' And [型号] = \'" & mr("型号") & "\'  and 状态 = \'" & mr("状态") & "\'")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[名称] = \'" & mr("名称") & "\'And [型号] = \'" & e.DataRow("型号") & "\'and 状态 = \'" & e.DataRow("状态") & "\'" )
                If dr IsNot Nothing Then
                    dr("库存数量") = dr("入库") - dr("出库") +dr("退货")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [名称] = \'" & mr("名称") & "\' And [型号] = \'" & mr("型号") & "\'  and 状态 = \'" & mr("状态") & "\'")
                For i As Integer = 1 To drs.Count - 1
                   drs(i)("库存数量") = drs(i-1)("库存数量") + drs(i)("入库") - drs(i)("出库")+ drs(i)("退货")
                Next
            End If
        End If
End Select

 

各种型号,各种状态的最后一条记录不准确.


改用以下方法后,仅表中最后一条记录的库存不准,有什么办法吗?

Select Case e.DataCol.Name
    Case "名称","型号","状态","入库","出库","退货"
        Dim s As Double
        Dim dr,r As DataRow
        Dim drs As List(of DataRow)
        For Each r In e.DataTable.dataRows
            s = 0
            drs = e.DataTable.Select("[名称] = \'" & r("名称") & "\' And [型号] = \'" & r("型号") & "\' And [状态] = \'" & r("状态") & "\'")
            For Each dr In drs
                s+ = dr("入库")-dr("出库")+dr("退货")
                dr("库存数量") = s
            Next
        Next
End Select




以上代码都在 DataColChanged




 

[此贴子已经被作者于2014-8-18 15:36:54编辑过]

--  作者:有点甜
--  发布时间:2014/8/18 15:55:00
--  

 简单改一下

 

     

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:流水账.foxdb


--  作者:qhczy
--  发布时间:2014/8/18 17:50:00
--  

最后一条记录还是数字不准确.


--  作者:有点甜
--  发布时间:2014/8/18 17:58:00
--  
 就8楼的例子,你说,怎么修改,最后数据不准确?