Foxtable(狐表)用户栏目专家坐堂 → [求助]重算库存的问题(参考帮助中的 高效率的流水账设计 的案例)


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

主题:[求助]重算库存的问题(参考帮助中的 高效率的流水账设计 的案例)

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
[求助]重算库存的问题(参考帮助中的 高效率的流水账设计 的案例)  发帖心情 Post By:2022/1/11 19:24:00 [只看该作者]

参考帮助文档中的 高效率的流水账设计 案例 做,在重置 每个产品第一行 入库列 时 耗时非常久,请帮忙看看如何优化,谢谢

以下附件中的案例 ,启动时 先执行了数据分组统计的 启动时要稍微等等

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.part01.rar

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.part02.rar

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.part03.rar

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.part04.rar
[此贴子已经被作者于2022/1/11 19:27:42编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111408 积分:567110 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/11 21:05:00 [只看该作者]

表事件代码没什么可优化的了。需要从逻辑处理上考虑:

这种是统计表的结果填充的,不应该再调用表事件重置,而是应该根据产品id和日期排好序,直接遍历表按顺序计算即可

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/11 23:02:00 [只看该作者]

耗时 3百多 秒


Dim g As New SQLGroupTableBuilder("统计表1", "明细表")
g.Connection Name = "ceshi"
g.Groups.AddDef("日期", DateGroupEnum.Year, "年份")
g.Groups.AddDef("日期", "月份")
g.Groups.AddDef("产品id")
g.Totals.AddDef("单价", AggregateEnum.Average)
g.Totals.AddDef("数量","入库")
g.Totals.AddExp("出库","0.00")
g.Totals.AddExp("库存","0.00")
g.Filter = "year(日期) = '2021' and month(日期) in ('1','2','3')"
Dim dt As DataTable = g.Build(True)
dt.DataCols.Add("日期", Gettype(String), "[年份] + SubString('00', 1, 2 - Len(Convert([月份],'System.String'))) + Convert([月份], 'System.String')")
dt.ReplaceFor("出库", 1)


Dim Products As List(Of String) = dt.GetValues("产品id")
For Each Product As String In Products
    Dim drs As List(of DataRow) = dt.Select("[产品id] = '" & Product & "'", "[日期]")
    drs(0)("库存") = drs(0)("入库") - drs(0)("出库")
    For i As Integer = 1 To drs.Count - 1
        drs(i)("库存") = drs(i-1)("库存") + drs(i)("入库") - drs(i)("出库")
    Next
Next


[此贴子已经被作者于2022/1/11 23:03:58编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111408 积分:567110 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/12 9:13:00 [只看该作者]

没有什么优化的余地了。再优化需要从逻辑上优化,比如做年结、季结、月结、..等等

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2022/1/12 15:31:00 [只看该作者]

改几行代码,就可以提高速度100倍:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目356.foxdb





[此贴子已经被作者于2022/1/12 15:39:48编辑过]

 回到顶部