以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现流水帐每月底自动结算?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177481)

--  作者:lgz518
--  发布时间:2022/5/24 11:40:00
--  如何实现流水帐每月底自动结算?
如何实现流水帐每月底自动结算,为“本月合计”,“本月合计“为下月初”期初数”?

流水账是区分产品的,例如下图的库存表:

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

此类流水账的设计方法要复杂一些,DataColChanged事件代码为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Select Case e.DataCol.Name
    Case
 "产品","入库",
"出库"
        
Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [产品] = \'" & e.DataRow("产品") & "\'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "[_SortKey] <= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
            Dim Val2 As Double = e.DataTable.Compute("Sum(出库)",Filter)
            dr("库存") = Val1 - Val2
        Next
        If e.DataCol.Name = "产品" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [产品] = \'" & e.OldValue & "\'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "[_SortKey] <= " & dr("_SortKey") & " And [产品] = \'" & dr("产品") & "\'"
                Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
                Dim Val2 As Double = e.DataTable.Compute("Sum(出库)",Filter)
                dr("库存") = Val1 - Val2
            Next
        End If
End
 Select



如果你希望同时得到每月和截止到该月的累计,代码为:

Dim t As Table = Tables("订单")
Dim
 g As Subtotalgroup
t
.SubtotalGroups.Clear()
\'常规统计

g
 = New Subtotalgroup
g
.GroupOn = "日期"
g
.TotalOn = "数量,金额"
t
.SubtotalGroups.Add(g)
\'截止统计

g
 = New Subtotalgroup
g
.GroupOn = "日期"
g
.TotalOn = "数量,金额"
g
.upto = True
t
.SubtotalGroups.Add(g)
t
.Subtotal()

得到的汇总模式如下:

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

以上代码合并应用,每月和截止到该月的统计,是临时性,再操作录入时,那统计就是被取消统计,无法达到需求。



--  作者:有点蓝
--  发布时间:2022/5/24 11:51:00
--  
增加一个“本月合计”列。按照流水账的方法把日期属于本月的统计后给“本月合计”列赋值