以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何提高替换数据的速度  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184712)

--  作者:明天的灵
--  发布时间:2022/12/25 14:36:00
--  如何提高替换数据的速度
在录入、修改客户信息的某个字段时,想同步到“出库主表”中。
目前采用客户信息表的“DataColChanged”事件来处理,代码如下:
SystemReady = False ‘出库主表有许多表达式列,暂停事件执行
。Try
For Each dr As DataRow In DataTables("出库主表").Select("订单客户 = \'" & e.DataRow("订单客户") & "\'")
    dr("结算日") = e.DataRow("结算日")
Next
Catch ex As Exception
    MessageBox.Show("更新数据失败") 
End Try
SystemReady = True ’恢复事件执行

目前“出库主表”约有32000行,发现执行一次数据更新,需要几分钟时间(与这个客户的出库主表记录数有关)。

请问,何种处理方法,才能提高更新速度?

[此贴子已经被作者于2022/12/25 17:29:26编辑过]

--  作者:有点蓝
--  发布时间:2022/12/25 17:50:00
--  
先看看:http://www.foxtable.com/webhelp/topics/1522.htm

替换一个列的数据用ReplaceForhttp://www.foxtable.com/webhelp/topics/1532.htm

--  作者:明天的灵
--  发布时间:2022/12/25 18:16:00
--  
已有判断列名。
还有,相同代码,在不建立表达式的数据库的测试项目中执行,所化时间基本为0.我怀疑是项目中表达式影响了给速度。


--  作者:有点蓝
--  发布时间:2022/12/25 18:18:00
--  
确实有影响,参考:http://www.foxtable.com/webhelp/topics/1935.htm
--  作者:明天的灵
--  发布时间:2022/12/25 21:39:00
--  
我把出库主表及出库明细表的所有表达式都停了,速度还是提不高。感觉一进入这个操作,整个狐表程序暂停了。
--  作者:有点蓝
--  发布时间:2022/12/25 21:54:00
--  
请提供实例测试
--  作者:明天的灵
--  发布时间:2022/12/25 23:12:00
--  
因实际数据涉及工厂的商业信息,不好发到论坛上来。如可以的话,我可以通过QQ私下发,QQ:496058092
--  作者:有点蓝
--  发布时间:2022/12/25 23:28:00
--  
没有必要发源项目。新建一个项目,导入表格和部分测试数据,可以把和测试无关的隐私列数据删除掉,然后测试看看是不是有同样的问题。

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

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

--  作者:明天的灵
--  发布时间:2022/12/26 8:42:00
--  
在执行客户信息表的“DataColChanged”事件时,已把系统事件SystemReady 停了,昨晚也把出库主表与出库明细表的所有表达式列停止,再去更新数据。还是会更新数据1分钟时间。


--  作者:有点蓝
--  发布时间:2022/12/26 8:47:00
--  
完整代码?