以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 同步表耗时太长 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188365) |
||||
-- 作者:cxmxjwlmq -- 发布时间:2023/9/16 9:40:00 -- 同步表耗时太长 各位老师:一个系统,用数据库外部表,出库单汇总与出库单明细关联,在同步表时耗时太长。 代码如下: Dim st As Date = Date.Now \'将开始时间保存在变量st中 DataTables("出库单汇总").StopRedraw
耗时如下图:
请各位老师,怎样修改一下代码,将耗时减少! 谢谢! |
||||
-- 作者:有点蓝 -- 发布时间:2023/9/16 10:12:00 -- 每个表同一个出库日期的数据有多少行?内网还是跨网连接数据源? 出库单明细也添加StopRedraw、ResumeRedraw 再试试
|
||||
-- 作者:cxmxjwlmq -- 发布时间:2023/9/16 10:22:00 -- 老师:好 现一出库日期中,汇总表100行之内,明细表1000行之内! 用的内部局域网! [此贴子已经被作者于2023/9/16 10:22:40编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2023/9/16 11:33:00 -- 屏蔽事件和表达式也不行? |
||||
-- 作者:cxmxjwlmq -- 发布时间:2023/9/16 13:02:00 -- 老师:好 屏蔽事件代码耗时更长 60多秒
屏蔽表达式代码如下: Dim st As Date = Date.Now \'将开始时间保存在变量st中 \'SystemReady = False DataTables("出库单明细").DataCols("折后单价").Expression = "" DataTables("出库单明细").StopRedraw DataTables("出库单明细").DataCols("折后单价").Expression = "单价 * 折扣率" DataTables("出库单汇总").DataCols("金额").Expression = ""
\'Catch ex As Exception MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") \'计算并显示执行代码所花费的秒数
耗时如图:
此主题相关图片如下:微信图片_20230916130145.png 麻烦老师给看看,谢谢! [此贴子已经被作者于2023/9/16 13:02:17编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2023/9/16 13:56:00 -- 这样测试看看 Dim st As Date = Date.Now \'将开始时间保存在变量st中 SystemReady = False \' Try \'追加数据代码 DataTables("出库单明细").DataCols("折后单价").Expression = "" DataTables("出库单明细").DataCols("金额").Expression = "" \'Sum(Child(出库关联).数量) Output.Show("去掉出库单明细表达式耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单明细").StopRedraw DataTables("出库单明细").RemoveFor("出库日期 = \'" & e.Form.Controls("DateTimePicker1").Text & "\'") Output.Show("移除出库单明细耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单明细").AppendLoad("出库日期 = \'" & e.Form.Controls("DateTimePicker1").Text & "\'") Output.Show("追加出库单明细耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单明细").DataCols("折后单价").Expression = "单价 * 折扣率" DataTables("出库单明细").DataCols("金额").Expression = "数量 * 折后单价 * 修正" Output.Show("添加出库单明细表达式耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单明细").ResumeRedraw Output.Show("恢复绘制出库单明细耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单汇总").DataCols("金额").Expression = "" DataTables("出库单汇总").DataCols("数量").Expression = "" Output.Show("去掉出库单汇总达式耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单汇总").StopRedraw DataTables("出库单汇总").RemoveFor("出库日期 = \'" & e.Form.Controls("DateTimePicker1").Text & "\'") Output.Show("移除出库单汇总耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单汇总").AppendLoad("出库日期 = \'" & e.Form.Controls("DateTimePicker1").Text & "\'") Output.Show("追加出库单汇总耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单汇总").DataCols("数量").Expression = "Sum(Child(出库关联).数量)" DataTables("出库单汇总").DataCols("金额").Expression = "Sum(Child(出库关联).金额)" Output.Show("添加出库单汇总表达式耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now DataTables("出库单汇总").ResumeRedraw Output.Show("恢复绘制出库单汇总耗时: " & (Date.Now - st).TotalSeconds & "秒") st = Date.Now With Tables("销售出库单_Table2") .Position = .Rows.Count - 1 End With \'e.Form.Controls("Label7").Visible = False \'Catch ex As Exception \' MessageBox.Show("追加数据失败") \'End Try SystemReady = True |
||||
-- 作者:cxmxjwlmq -- 发布时间:2023/9/16 17:38:00 -- 老师:好 测试:Output.Show("移除出库单明细耗时: " & (Date.Now - st).TotalSeconds & "秒") 移除出库单明细耗时:22.027秒
Output.Show("追加出库单明细耗时: " & (Date.Now - st).TotalSeconds & "秒") 追加出库单明细耗时:21.45秒
Output.Show("添加出库单明细表达式耗时: " & (Date.Now - st).TotalSeconds & "秒") 添加出库单明细表达式耗时:0.29秒
Output.Show("移除出库单汇总耗时: " & (Date.Now - st).TotalSeconds & "秒") 移除出库单汇总耗时:5.522
这几项耗时较长,有没有缩短的可能? 请老师费心!谢谢 |
||||
-- 作者:有点蓝 -- 发布时间:2023/9/16 17:54:00 -- 1000行数据不可能这么慢,应该是有其它什么代码影响了。我测试移除5000行数据不到1秒。 具体什么原因要测试过才知道,方便做个例子发上来看看
|
||||
-- 作者:cxmxjwlmq -- 发布时间:2023/9/16 18:14:00 -- 老师,外部数据表怎么做例子?
[此贴子已经被作者于2023/9/17 10:24:09编辑过]
|
||||
-- 作者:cxmxjwlmq -- 发布时间:2023/9/17 11:38:00 -- 老师:请查收附件,耗时过长的事,还需要你指教!
代码中要屏蔽表事件,这两个表的表事件都没有加! 请多费心! |