以文本方式查看主题

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

--  作者:liujia9716
--  发布时间:2014/10/25 11:53:00
--  [求助]关于库存统计的问题
图片点击可在新窗口打开查看
这个是狐表自带的高效流水账,我在其中加了“公司”一列,狐表自带的高效流水账是以产品的入库、出库计算库存,我想实现以公司产品的入库、出库计算出库存,就是在原来”产品“计算库存的基础上加入一个前提条件“公司”来计算库存,以实现每个公司的每种产品单独计算库存,希望能得到帮助,
以下是狐表自带的代码:该如何修改?求解........................ 

例子二_DataColChanged

 

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("产品") & "\'", "[_SortKey] Desc")

        If dr Is Nothing Then

            mr("库存") = mr("入库") - mr("出库")

            dr = mr

        End If

        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'", "[_SortKey]")

        For i As Integer = 1 To drs.Count - 1

            drs(i)("库存") = drs(i-1)("库存") + 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 [产品] = \'" & e.OldValue & "\'", "[_SortKey] Desc")

            If dr Is Nothing Then

                dr = e.DataTable.Find("[产品] = \'" & e.OldValue & "\'", "[_SortKey]")

                If dr IsNot Nothing Then

                    dr("库存") = dr("入库") - dr("出库")

                End If

            End If

            If dr IsNot Nothing Then

                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'", "[_SortKey]")

                For i As Integer = 1 To drs.Count - 1

                    drs(i)("库存") = drs(i-1)("库存") + drs(i)("入库") - drs(i)("出库")

                Next

            End If

        End If

End Select

 

例子二_DataRowDeleting

 

e.DataRow("入库") = 0

e.DataRow("出库") = 0

 

例子二_AfterMoveRow

 

Dim Key As Decimal

Dim Index As Integer

Dim Filter As String

Dim r As Row

Index = Math.Min(e.OldIndex, e.NewIndex)

Key = e.Table.Rows(Index)("_SortKey")

r = e.Table.Rows(e.NewIndex)

Filter = "[_SortKey] >= " & Key & " And [产品] = \'" & r("产品") & "\'"

e.Table.DataTable.DataCols("入库").RaiseDataColChanged(Filter)


--  作者:Bin
--  发布时间:2014/10/25 13:52:00
--  
帮助就有按产品分类的例子 http://www.foxtable.com/help/topics/2136.htm
--  作者:liujia9716
--  发布时间:2014/10/25 15:17:00
--  

帮助里是以产品分类,我是想以公司的产品分类,就是公司和产品并存的条件下分类统计库存

我就是个初级菜鸟,不会编程写代码,只是偶然看到了这个高效流水账,根本看不懂代码的意思,也不知道怎么在条件的基础上在加入一个条件,所以才想找高手大哥帮忙,麻烦在这个代码的基础上再帮我加入“公司”这个条件,小弟在这跪谢了

[此贴子已经被作者于2014-10-25 15:23:41编辑过]

--  作者:Bin
--  发布时间:2014/10/25 15:24:00
--  
不用加,参考2楼的例子,本身就有有条件了.分类的
--  作者:liujia9716
--  发布时间:2014/10/25 15:28:00
--  
可是不加公司只能显示出产品的库存,不能按公司的产品计算库存,
--  作者:Bin
--  发布时间:2014/10/25 15:41:00
--  
所有涉及条件的地方

"[_SortKey] >= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'"

加入公司

"[_SortKey] >= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'  and [公司] = \'" & dr("公司")  & "\'"

--  作者:liujia9716
--  发布时间:2014/10/25 16:09:00
--  

大哥能在1楼的代码基础上帮我改下吗,我实在是不懂编程代码,纯菜鸟一个,只是套用了帮助里的试用的,小弟在这里跪谢了


--  作者:Bin
--  发布时间:2014/10/25 16:10:00
--  
6楼不是给你改了吗? 你套进去即可..  
--  作者:liujia9716
--  发布时间:2014/10/25 16:29:00
--  

我套进去可是不能实现各个公司产品单独计算库存,帮我改下吧,我实在是不会弄代码,谢谢了