Foxtable(狐表)用户栏目专家坐堂 → 流水账与重置列的问题


  共有720人关注过本帖树形打印复制链接

主题:流水账与重置列的问题

帅哥哟,离线,有人找我吗?
lin98
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
流水账与重置列的问题  发帖心情 Post By:2024/8/10 11:50:00 [显示全部帖子]

流水账与重置列
下面都是重置
问题一:哪个更高效?
问题二:"库存表"增加一列为”期初数“,要加在下面代码哪个位置?


方法一
Dim drs As List(of DataRow) = DataTables("库存表").Select("", "产品,日期")
Dim prev As String  = ""
For i As Integer = 0 To drs.count -1
    Dim cur As String = drs(i)("产品")
    If cur = prev Then
        drs(i)("库存") = drs(i - 1)("库存") + drs(i)("入库") - drs(i)("出库")
    Else
        drs(i)("库存") = drs(i)("入库") - drs(i)("出库")
        prev = cur
    End If
Next

方法二
Dim nms As New List(Of String)
Dim drs As New List(of DataRow)
With DataTables("表名")
    nms = .GetValues("产品")
    For Each nm As String In nms '找出每个产品的第一行数据, 添加到集合drs中
        drs.Add(.Find("产品 = '" & nm & "'", "[_SortKey]"))
    Next
    For Each dr As DataRow In drs
        .DataCols("入库").RaiseDataColChanged(dr)
    Next
End With

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/10 15:03:00 [显示全部帖子]

2、整个表格只有一个期初值?还是每年、每季、每月都有期初?
帮助-流水帐-实例-库存表的字段:日期,产品,入库,出库,库存
需求-流水帐-库存表的字段:日期,产品,期初数,入库,出库,库存

库存表能有更优化,每年会更省事,但可能数据会大比如100W行数据,可能考虑,每月会相对好,但每月要迁数据

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/10 15:49: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("产品") & "'", "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("库存") = mr("入库") - mr("出库")
 mr("库存") = 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

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/10 15:51:00 [显示全部帖子]

方法一
Dim drs As List(of DataRow) = DataTables("库存表").Select("", "产品,日期")
Dim prev As String  = ""
For i As Integer = 0 To drs.count -1
    Dim cur As String = drs(i)("产品")
    If cur = prev Then
        drs(i)("库存") = drs(i - 1)("库存") + drs(i)("入库") - drs(i)("出库")
drs(i)("期初数") = drs(i - 1)("库存") + drs(i)("入库") - drs(i)("出库")
    Else
        drs(i)("库存") = drs(i)("入库") - drs(i)("出库")
        prev = cur
    End If
Next

方法二
Dim nms As New List(Of String)
Dim drs As New List(of DataRow)
With DataTables("表名")
    nms = .GetValues("产品")
    For Each nm As String In nms '找出每个产品的第一行数据, 添加到集合drs中
        drs.Add(.Find("产品 = '" & nm & "'", "[_SortKey]"))
    Next
    For Each dr As DataRow In drs
        .DataCols("入库").RaiseDataColChanged(dr)
.DataCols("期初数").RaiseDataColChanged(dr)
    Next
End With

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/10 15:53:00 [显示全部帖子]

5楼6楼的期初数放的位置是否正确?放在哪正确?

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/12 9:38:00 [显示全部帖子]

月结。期初永远放到第一行,这样从第二行开始计算即可
完全不需要期初数这种列,期初值放到第一行的入库列即可

这就有以下问题:
1.如何当前月未结存?每月未或固定日期为25日,就自动结算为:摘要:本月合计,结存数据每种产品日记帐最后一行的数据。
2.如何实现当前表的当前数据转到历史表的数据,当前表的期初数如何获取?
也就表A到月未或次月1日,将其流水数据,全部转给表B,在新一月(次月),表A因为月未或次月做结转清空表,没数据,新月份记帐,如何期初?


此主题相关图片如下:日记帐.png
按此在新窗口浏览图片


 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/12 10:27:00 [显示全部帖子]

后表A新增一行,记录之前月结的结果,也就是期初值。就是当前表永远只有本月的数据

结转之后,如何自动批量,期初数据。如图

图片点击可在新窗口打开查看此主题相关图片如下:日记帐-1.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/12 11:51:00 [显示全部帖子]

空A表的时候保留本月合计?然后把日期更改为下月1日,本月合计改为期初,
批量如何操作?

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1346 积分:8887 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/12 14:40:00 [显示全部帖子]

本月合计是如何统计出来,它是每月或25日是每种产品最后结存数量,是每种产品最后结存数

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 = 
"数量,金额"
t.SubtotalGroups.Add(g)

t.Subtotal() 
'生成汇总模式

如何改?

 回到顶部