Foxtable(狐表)用户栏目专家坐堂 → [讨论]一段时间后打开窗口有很高延迟


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

主题:[讨论]一段时间后打开窗口有很高延迟

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


加好友 发短信
等级:幼狐 帖子:64 积分:516 威望:0 精华:0 注册:2023/4/22 14:39:00
[讨论]一段时间后打开窗口有很高延迟  发帖心情 Post By:2023/6/13 8:38:00 [只看该作者]

项目完成编译,相同数据量下,打开子窗口的速度相比前几天有很高的延迟,最慢的能到1分钟。现在项目初始不加载数据,操作时只加载所操作单号的数据。速度一样慢。打开子窗口的代码【forms("订单").show】【forms("订单").contcorls("textbox1").value = "订单明细"】。还请大神解惑,给点加速建议

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


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

窗口有很多控件?窗口打开时执行了什么代码?窗口里有没有表格,会加载很多数据?

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


加好友 发短信
等级:幼狐 帖子:64 积分:516 威望:0 精华:0 注册:2023/4/22 14:39:00
  发帖心情 Post By:2023/6/13 9:48:00 [只看该作者]

窗口里4个textbox,2个button,1个sqltable,1个table,窗口初始加载一个订单号的订单明细,在sqltable显示,sqltable数据不超过10行,table加载数据不超过30行。就是看到打开很慢,所以限制加载数,执行sqltable的click事件筛选table数据时,卡顿最明显

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


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

sqltable的click事件代码看看

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


加好友 发短信
等级:幼狐 帖子:64 积分:516 威望:0 精华:0 注册:2023/4/22 14:39:00
  发帖心情 Post By:2023/6/13 10:03:00 [只看该作者]

sqltable总共3个事件有代码:prepareedit:Select Case e.Col.Name
    Case "G色", "A色", "B色", "C色", "D色", "E色"
        Dim tr As Row = Tables("订单").Current
        e.Col.ComboList = DataTables("样品物料").SQLGetComboListString("颜色", "样品编号 = '" & tr("样品编号") & "' and 样品性质 = '" & tr("样品性质") & "'")
End Select
e.Table.Save

datacolchanged:Select Case e.Col.Name
    Case "G色"
        If e.Row.IsNull("G色") = False Then
            If cm IsNot Nothing Then
                Dim cms() As String = cm.Split("|")
                For i As Integer = 0 To cms.Length - 1
                    Tables("订单.订单明细").AddNew
                    tr = Tables("订单.订单明细").Current
                    tr("G色") = e.Row("G色")
                    tr("计数") = i + 1
                    tr("尺码") = cms(i)
                Next
                Tables("订单明细").Save
            Else
                MessageBox.Show("尚未设置尺码组!")
                Return
            End If
        End If
    Case "A色", "B色" , "C色", "D色", "E色"
        If e.Row.IsNull("G色") = True Then
            MessageBox.Show("主色不能为空!")
            Return
        Else
           txt = e.Col.Name
           DataTables("订单明细").ReplaceFor(txt, e.Row(txt), "生产单号 = '" & Tables("订单").Current("生产单号") & _
           "' and G色 = '" & e.Row("G色") & "'")
            
        End If 
End Select



click:Tables("订单.订单明细").Filter = "G色 = '" & e.Table.Current("G色") & "'"

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


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

prepareedit事件执行很频繁的,1秒就有很多次,不建议使用SQLGetComboListString,最好是全部加载"样品物料"这个表数据然后使用GetComboListString。另外加多一个判断:http://www.foxtable.com/webhelp/topics/0605.htm,看示例二第3点

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


加好友 发短信
等级:幼狐 帖子:64 积分:516 威望:0 精华:0 注册:2023/4/22 14:39:00
  发帖心情 Post By:2023/6/13 10:59:00 [只看该作者]

好的,谢谢

 回到顶部