Foxtable(狐表)用户栏目专家坐堂 → 同步表耗时太长


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

主题:同步表耗时太长

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


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

每个表同一个出库日期的数据有多少行?内网还是跨网连接数据源?

出库单明细也添加StopRedraw、ResumeRedraw

再试试

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/9/16 11:33:00 [显示全部帖子]

屏蔽事件和表达式也不行?

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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


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


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

1000行数据不可能这么慢,应该是有其它什么代码影响了。我测试移除5000行数据不到1秒。

具体什么原因要测试过才知道,方便做个例子发上来看看

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/9/17 20:39:00 [显示全部帖子]

您10楼的项目测试也有问题?

我这边测试很快哦。

数据在内部表:
移除表B耗时: 0.0311708秒
追加表B耗时: 0.0775326秒
恢复绘制表B耗时: 0.0015033秒
移除表A耗时: 0秒
追加表A耗时: 0.0686683秒
添加表A表达式耗时: 0秒
恢复绘制表A耗时: 0秒

数据重定向到本机的SqlServer:
移除表B耗时: 0.0312072秒
追加表B耗时: 0.1388104秒
恢复绘制表B耗时: 0秒
移除表A耗时: 0秒
追加表A耗时: 0.0051048秒
添加表A表达式耗时: 0秒
恢复绘制表A耗时: 0秒

暂时没有局域网可以测试,但是估计也在1秒以内。你把数据库安装到本机试试,如果不慢,可能是网络问题了


 回到顶部