Foxtable(狐表)用户栏目专家坐堂 → 已运算的数据,重置列时,怎样才会不重新再运算?


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

主题:已运算的数据,重置列时,怎样才会不重新再运算?

美女呀,离线,留言给我吧!
DLW77
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1717 威望:0 精华:0 注册:2018/2/26 13:15:00
已运算的数据,重置列时,怎样才会不重新再运算?  发帖心情 Post By:2018/7/4 12:13:00 [只看该作者]

我有一个出入库流水表,1月份的流水明细我已经算出结果了,我再导入2月份的数据,重置列时,还是会从开头开始运算,就会运算很久。老师,有什么方法是,1月份已经算过的,就冻结了,不用再重新再运算直接再运算2月份就可以了。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/4 12:40:00 [只看该作者]

具体实例发上来测试。

 回到顶部
美女呀,离线,留言给我吧!
DLW77
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1717 威望:0 精华:0 注册:2018/2/26 13:15:00
是上传压缩吗?  发帖心情 Post By:2018/7/4 15:29:00 [只看该作者]

是上传压缩吗?
[此贴子已经被作者于2018/7/4 15:30:22编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/4 15:34:00 [只看该作者]

1、看看这个

 

http://www.foxtable.com/webhelp/scr/2136.htm

 

2、重置列的时候,建议自己做一个按钮,设置重置列的代码

 

http://www.foxtable.com/webhelp/scr/1587.htm

 


 回到顶部
美女呀,离线,留言给我吧!
DLW77
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1717 威望:0 精华:0 注册:2018/2/26 13:15:00
老师,已上传,请帮我看看。  发帖心情 Post By:2018/7/4 18:18:00 [只看该作者]

老师,请帮我看一下里面的入库成本表跟出入库成本表的代码?
图片点击可在新窗口打开查看此主题相关图片如下:1530699412(1).png
图片点击可在新窗口打开查看是不是设置得哪里有问题?当有几千行时,运算就会很慢,而且每次导入后,再按重置,就会重头开始再算一遍,太浪费时间了。我都不敢直接运算,都要加个msgbox在前面才敢算,要不然系统就会崩溃的。
[此贴子已经被作者于2018/7/5 13:19:31编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/4 22:04:00 [只看该作者]

你可以做一个按钮重新计算,红色你可以修改条件

 

Dim filter As String = "日期 >= #2018-03-01#"
Dim drs As New List(of DataRow)
With DataTables("入库成本表")
    For Each nm As String In .GetValues("品号", filter) '找出每个产品的第一行数据, 添加到集合drs中
        drs.Add(.Find("品号 = '" & nm & "' and " & filter, "[_SortKey]"))
    Next
    For Each r As DataRow In drs
        .DataCols("入库数量").RaiseDataColChanged(r) '重置每个产品的第一行
    Next
End With


 回到顶部
美女呀,离线,留言给我吧!
DLW77
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1717 威望:0 精华:0 注册:2018/2/26 13:15:00
"日期 >= #2018-03-01#"这个是不是3-1日后的重置?  发帖心情 Post By:2018/7/5 10:13:00 [只看该作者]

老师,"日期 >= #2018-03-01#"这个是不是说对3-1日后的数据进行重置?如果3-1日后有几个月的数据,数据导入有几万个,那也是要算很久的。还是这只是一个日期的格式?
老师,我刚加了个按键,把代码写进去,后按按键,现在算了半个小时,还是点界面都没反映,估计还在运算中。
[此贴子已经被作者于2018/7/5 10:29:46编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/5 10:53:00 [只看该作者]

下面红色的是条件,你从什么时候开始算,就修改红色代码,灵活变通。

 

假如大于2018-03-01的数据只有100行,那计算应该很快吧?执行下面代码,如果还有问题,做个大数据量的例子发上来测试。

 

Dim filter As String = "日期 >= #2018-03-01#"
Dim drss As New List(of DataRow)
With DataTables("入库成本表")
    For Each nm As String In .GetValues("品号", filter) '找出每个产品的第一行数据, 添加到集合drs中
        drss.Add(.Find("品号 = '" & nm & "' and " & filter, "[_SortKey]"))
    Next
    systemready = False
    For Each r As DataRow In drss
        Dim dr As DataRow
        Dim mr As DataRow = r
        Dim drs As List(of DataRow)
        dr = .Find("[_SortKey] < " & mr("_SortKey") & " And [品号] = '" & mr("品号") & "'", "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("结存数量") = mr("期初数量") + mr("入库数量") - mr("出库数量")
            mr("结存金额") = mr("期初成本") + mr("入库金额") - mr("出库金额")
            dr = mr
        End If
        drs = .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)("入库数量") - drs(i)("出库数量")
            drs(i)("结存金额") = drs(i-1)("结存金额")+drs(i)("期初成本")+drs(i)("入库金额")-drs(i)("出库金额")
        Next
       
    Next
    systemready = True
End With


 回到顶部
美女呀,离线,留言给我吧!
DLW77
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:188 积分:1717 威望:0 精华:0 注册:2018/2/26 13:15:00
能不能做个键,执行这个日期项?  发帖心情 Post By:2018/7/5 11:44:00 [只看该作者]

老师,如果我不是自己用的,给其他人用,就不可能每个月都改日期,能不能加个日期下拉项?如果可以,代码要怎么写,请老师指导一下。老师,像这种数据量比较大的,我是不是可以做个动态加载?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/5 12:20:00 [只看该作者]

比如,从当前行开始计算,就这样写

 

Dim filter As String = "_Identify >= " & Tables("入库成本表").current("_Identify")


 回到顶部