Foxtable(狐表)用户栏目专家坐堂 → 如何提高替换数据的速度


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

主题:如何提高替换数据的速度

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/25 17:50:00 [显示全部帖子]


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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/25 18:18:00 [显示全部帖子]


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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/25 21:54:00 [显示全部帖子]

请提供实例测试

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/25 23:28:00 [显示全部帖子]

没有必要发源项目。新建一个项目,导入表格和部分测试数据,可以把和测试无关的隐私列数据删除掉,然后测试看看是不是有同样的问题。

如果说是修改客户信息的其中一行,然后ReplaceFor全部更新"出库主表"3W行数据的用户一般不应该慢的。

下面情况可能会慢
1、对客户信息进行重置列操作,这种基本无解,不要动不动就整表重置列。如果需要对整表数据进行更新的,建议使用sql
2、还是有事件代码,或者表达式列影响了
3、ReplaceFor更新的行数多,如果连接的是远程数据库,服务器带宽不足的话可能会保存的比较慢

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/26 8:47:00 [显示全部帖子]

完整代码?

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/26 9:43:00 [显示全部帖子]


Select Case e.DataCol.Name 
    Case "现金结帐"
Dim st As Date = Date.Now
        SystemReady = False '暂停执行事件代码
        Try
            Functions.Execute("stop_exp") '暂停表达式
MessageBox.Show("暂停表达式耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数
st Date.Now
DataTables("出库主表").ReplaceFor("现金客户"e.DataRow("现金结帐")"订单客户 = '" & e.DataRow("订货客户") & "'")
        Catch ex As Exception 
            'MessageBox.Show("更新现金结帐失败") 
        End Try
MessageBox.Show("更新现金结帐耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数
st Date.Now
        Functions.Execute("restore_exp")  '恢复表达式
        SystemReady = True '恢复执行事件代码
MessageBox.Show("恢复表达式耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数
        MessageBox.Show("现金结帐状态修改完毕")
        

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/26 9:50:00 [显示全部帖子]

更新的是"出库主表"的数据,要停止"出库主表"的表达式才有用啊

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/26 10:15:00 [显示全部帖子]

12楼的方法测试什么地方慢?!

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/26 10:31:00 [显示全部帖子]

只能减少加载的数据,然后使用sqlReplaceFor吧

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


加好友 发短信
等级:超级版主 帖子:111390 积分:567014 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/26 10:44:00 [显示全部帖子]

多个表应该都有关联关系,更新其中一个表的数据都有可能引起所有有关联的表的表达式重算

 回到顶部
总数 12 1 2 下一页