Foxtable(狐表)用户栏目专家坐堂 → 窗口加载数据慢


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

主题:窗口加载数据慢

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


加好友 发短信
等级:幼狐 帖子:93 积分:1029 威望:0 精华:0 注册:2018/4/28 23:27:00
窗口加载数据慢  发帖心情 Post By:2019/12/21 9:21:00 [只看该作者]

在窗口设计了一个控件,控件代码如下,并且在窗口放置了有关联关系的主表和明细表,在以前运行速度还可以接受,但近期速度特别慢,
是不是与数据量有关,现在主表数据量有1000条,明细表有6000条

Dim Filter As String
With e.Form.Controls("客户名称")
    If .Value IsNot Nothing Then
        Filter = "客户名称 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("订单编号")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "订单编号 = '" & .Value & "'"
    End If
End With
If Filter > "" Then
    Tables("铝窗订单主表").Filter = Filter
    
End If

Dim drs As List(Of DataRow) = DataTables("铝窗订单主表").Select("订单编号 = '" & e.form.controls("订单编号").Text & "'")
If drs.count > 0 Then
    e.form.controls("TextBox1").Text = drs(0)("备注")
    e.form.controls("TextBox2").Text = drs(0)("产品名称")
    e.form.controls("TextBox3").Text = drs(0)("铝窗颜色")
    e.form.controls("TextBox4").Text = drs(0)("玻璃类型")
    e.form.controls("TextBox5").Text = drs(0)("纱窗类型")
    e.form.controls("TextBox6").Text = drs(0)("锁向")
    e.form.controls("TextBox7").Text = drs(0)("一体窗材料")
Else
    e.form.controls("TextBox1").Text = Nothing
    e.form.controls("TextBox2").Text = Nothing
    e.form.controls("TextBox3").Text = Nothing
    e.form.controls("TextBox4").Text = Nothing
    e.form.controls("TextBox5").Text = Nothing
    e.form.controls("TextBox6").Text = Nothing
    e.form.controls("TextBox7").Text = Nothing
End If

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


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

和数据量是肯定有关系的。

Dim dr As DataRow = DataTables("铝窗订单主表").Find("订单编号 = '" & e.form.controls("订单编号").Text & "'")
If dr isnot nothing Then
    e.form.controls("TextBox1").Text = dr("备注")
    e.form.controls("TextBox2").Text = dr("产品名称")
……


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


加好友 发短信
等级:幼狐 帖子:93 积分:1029 威望:0 精华:0 注册:2018/4/28 23:27:00
  发帖心情 Post By:2019/12/21 10:58:00 [只看该作者]

我取消赋值其他TextBox,速度没有变,还是慢,是不是还有其他原因



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


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

把赋值的代码全部去掉还慢就是筛选的问题了。上面全部代码都去掉慢不慢?几千条数据做筛选也不应该慢的,"铝窗订单主表"表事件特别是currentchanged事件有没有代码?

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


加好友 发短信
等级:幼狐 帖子:93 积分:1029 威望:0 精华:0 注册:2018/4/28 23:27:00
  发帖心情 Post By:2019/12/21 16:23:00 [只看该作者]

"铝窗订单主表"表事件currentchanged事件只有如下代码
Tables("铝窗订单明细表").Filter = "订单编号 = '"& Tables("铝窗订单主表").Current("订单编号") & "'"

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


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

去掉这个代码会不会慢?可以检查一下有没有什么表达式计算有影响的

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


加好友 发短信
等级:幼狐 帖子:93 积分:1029 威望:0 精华:0 注册:2018/4/28 23:27:00
  发帖心情 Post By:2020/3/29 17:48:00 [只看该作者]

我可能找到影响速度的地方了,以前是按订单编号将“订单明细表”中的“面积”合计到“订单主表”中,

再通过计算返回到订单明细表的每个行,可能这里出现了问题。

我想直接在订单明细表中计算,具体公式:

 

按订单编号sum(面积数量),平均平方数=面积/产品个数,

if 平均平方数>3,不够平方单价=0

if 平均平方数>2,不够平方单价=10

if 平均平方数>1,不够平方单价=25

 

 

蓝老师,这代码怎么写,谢谢

 


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


加好友 发短信
等级:超级版主 帖子:105926 积分:538693 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/29 21:41:00 [只看该作者]

没看懂描述的意思。这样?

if e.datarow("平均平方数") > 3 then
e.datarow("不够平方单价")=0
elseif e.datarow("平均平方数") > 2 then
e.datarow("不够平方单价")=10
elseif e.datarow("平均平方数") > 1 then
e.datarow("不够平方单价")=25
end if

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


加好友 发短信
等级:幼狐 帖子:93 积分:1029 威望:0 精华:0 注册:2018/4/28 23:27:00
  发帖心情 Post By:2020/3/30 8:01:00 [只看该作者]

主要是在表事件中,写合计面积的代码,这个代码尝试很多次,不会写,得到的结果在“不够平方单价”列进行计算,

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


加好友 发短信
等级:超级版主 帖子:105926 积分:538693 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/30 9:01:00 [只看该作者]

请上传实例说明

 回到顶部