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


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

主题:同步表耗时太长

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


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
同步表耗时太长  发帖心情 Post By:2023/9/16 9:40:00 [只看该作者]

各位老师:一个系统,用数据库外部表,出库单汇总与出库单明细关联,在同步表时耗时太长。

代码如下:

Dim st As Date = Date.Now  '将开始时间保存在变量st中
DataTables("出库单明细").RemoveFor("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")
DataTables("出库单明细").AppendLoad("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")

DataTables("出库单汇总").StopRedraw
DataTables("出库单汇总").RemoveFor("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")
DataTables("出库单汇总").AppendLoad("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")
DataTables("出库单汇总").ResumeRedraw
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数

 

 

耗时如下图:

 


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20230916094003.png
图片点击可在新窗口打开查看

 

请各位老师,怎样修改一下代码,将耗时减少!

谢谢!


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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/9/16 10:12:00 [只看该作者]

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

出库单明细也添加StopRedraw、ResumeRedraw

再试试

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


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2023/9/16 10:22:00 [只看该作者]

老师:好

现一出库日期中,汇总表100行之内,明细表1000行之内!

用的内部局域网!

[此贴子已经被作者于2023/9/16 10:22:40编辑过]

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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/9/16 11:33:00 [只看该作者]

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

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


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2023/9/16 13:02:00 [只看该作者]

老师:好

屏蔽事件代码耗时更长

 60多秒

 

屏蔽表达式代码如下:

Dim st As Date = Date.Now  '将开始时间保存在变量st中

'SystemReady =  False
' Try
'追加数据代码

DataTables("出库单明细").DataCols("折后单价").Expression = ""
DataTables("出库单明细").DataCols("金额").Expression = ""
'Sum(Child(出库关联).数量)

DataTables("出库单明细").StopRedraw
DataTables("出库单明细").RemoveFor("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")
DataTables("出库单明细").AppendLoad("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")
DataTables("出库单明细").ResumeRedraw

DataTables("出库单明细").DataCols("折后单价").Expression = "单价 * 折扣率"
DataTables("出库单明细").DataCols("金额").Expression = "数量 * 折后单价 * 修正"

DataTables("出库单汇总").DataCols("金额").Expression = ""
DataTables("出库单汇总").DataCols("数量").Expression = ""
DataTables("出库单汇总").StopRedraw
DataTables("出库单汇总").RemoveFor("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")
DataTables("出库单汇总").AppendLoad("出库日期 = '" & e.Form.Controls("DateTimePicker1").Text & "'")
DataTables("出库单汇总").ResumeRedraw
DataTables("出库单汇总").DataCols("数量").Expression = "Sum(Child(出库关联).数量)"
DataTables("出库单汇总").DataCols("金额").Expression = "Sum(Child(出库关联).金额)"


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

MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数

 

耗时如图:

 
此主题相关图片如下:微信图片_20230916130145.png
按此在新窗口浏览图片

麻烦老师给看看,谢谢!

[此贴子已经被作者于2023/9/16 13:02:17编辑过]

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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望: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


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


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By: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

 

    这几项耗时较长,有没有缩短的可能?

请老师费心!谢谢


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


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/9/16 17:54:00 [只看该作者]

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

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

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


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2023/9/16 18:14:00 [只看该作者]

老师,图片点击可在新窗口打开查看外部数据表怎么做例子?

 

 

[此贴子已经被作者于2023/9/17 10:24:09编辑过]

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


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2023/9/17 11:38:00 [只看该作者]

老师:请查收附件,耗时过长的事,还需要你指教!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

代码中要屏蔽表事件,这两个表的表事件都没有加!

请多费心!


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