以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  窗口加载数据慢  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=144469)

--  作者:liuandwang
--  发布时间: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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/12/21 10:58:00
--  
我取消赋值其他TextBox,速度没有变,还是慢,是不是还有其他原因



--  作者:有点蓝
--  发布时间:2019/12/21 11:04:00
--  
把赋值的代码全部去掉还慢就是筛选的问题了。上面全部代码都去掉慢不慢?几千条数据做筛选也不应该慢的,"铝窗订单主表"表事件特别是currentchanged事件有没有代码?
--  作者:liuandwang
--  发布时间:2019/12/21 16:23:00
--  
"铝窗订单主表"表事件currentchanged事件只有如下代码
Tables("铝窗订单明细表").Filter = "订单编号 = \'"& Tables("铝窗订单主表").Current("订单编号") & "\'"

--  作者:有点蓝
--  发布时间:2019/12/21 16:36:00
--  
去掉这个代码会不会慢?可以检查一下有没有什么表达式计算有影响的
--  作者:liuandwang
--  发布时间:2020/3/29 17:48:00
--  

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

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

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

 

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

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

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

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

 

 

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

 


--  作者:有点蓝
--  发布时间: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
--  发布时间:2020/3/30 8:01:00
--  
主要是在表事件中,写合计面积的代码,这个代码尝试很多次,不会写,得到的结果在“不够平方单价”列进行计算,
--  作者:有点蓝
--  发布时间:2020/3/30 9:01:00
--  
请上传实例说明