以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 窗口加载数据慢 (http://foxtable.net/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 -- 没看懂描述的意思。这样? 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 -- 请上传实例说明 |