以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教优化打开窗口太耗时 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190261) |
-- 作者:keli0917 -- 发布时间:2024/1/26 20:24:00 -- 请教优化打开窗口太耗时 约有十几个TEXT控件的窗口打开,AFTERLOAD事件,加载默认10几个数值,有三个ADDNEW,耗时6秒,怎么优化?
dim dr as row= Tables("表1").AddNew() Dim c1md As New SQL1Command 1cmd1.C 1cm1d.CommandText = "Se1lect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'单位\'" dr("单位") = 1cmd.ExecuteScalar() ~~~~~~~ 有十几个1cm1d.CommandText dim dr1 as row= Tables("表2").AddNew() dim dr2 as row= Tables("表3").AddNew() |
-- 作者:有点蓝 -- 发布时间:2024/1/27 8:51:00 -- 请贴出完整代码 |
-- 作者:keli0917 -- 发布时间:2024/1/27 10:17:00 -- 能不能设一个函数,加载数据。代码如下: Dim cmd As new SQLCommand() cmd.C \'指定数据源 Dim dr As Row = Args(0) \' cmd.CommandText = "S1elect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'经营单位\'" dr("经营单位") = cmd.ExecuteScalar() cmd.commandtext = "sel1ect 统一社会信用代码 From [JC_公司信息] where 中文全称 = \'" & dr("经营单位") & "\'" dr("统一社会信用代码") = cmd.ExecuteScalar() dr("境内发货人") = cmd.ExecuteScalar() dr("生产销售单位") =cmd.ExecuteScalar() cmd.CommandText = "Se1lect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'币种\'" dr("币种") = cmd.ExecuteScalar() cmd.CommandText = "Se1lect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'收汇方式\'" dr("收汇方式") = cmd.ExecuteScalar() cmd.CommandText = "Sel1ect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'唛头\'" dr("唛头") = cmd.ExecuteScalar() cmd.CommandText = "Sel1ect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'包装种类\'" dr("包装种类") = cmd.ExecuteScalar() cmd.CommandText = "Sel1ect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'成交方式\'" dr("成交方式") = cmd.ExecuteScalar() cmd.CommandText = "Sel1ect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'运输方式\'" dr("运输方式") = cmd.ExecuteScalar() cmd.CommandText = "Sel1ect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'监管方式\'" dr("监管方式") = cmd.ExecuteScalar() cmd.CommandText = "Se1lect 单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\' And 方向 = \'征免性质\'" dr("征免性质") = cmd.ExecuteScalar() 然后在窗口的AFTERLOAD事件代码 dim dr as row = Tables("AAA").AddNew() Functions.AsyncExecute("加载数据",dr) \'异步调用 [此贴子已经被作者于2024/1/27 10:17:49编辑过]
|
-- 作者:keli0917 -- 发布时间:2024/1/27 10:19:00 -- 测试了一下,这样窗口打开后就卡死了。 |
-- 作者:keli0917 -- 发布时间:2024/1/27 10:22:00 -- 无非是打开一个窗口,先新增一行,然后要加载的默认值有点多。可能有几十个。怎么让他慢慢加载进来并赋值给新建行,同时展示在窗口的控件上 [此贴子已经被作者于2024/1/27 10:23:46编辑过]
|
-- 作者:有点蓝 -- 发布时间:2024/1/27 10:27:00 -- [JC_默认值设置]这个表的结构,和存储的数据截图发上来看看 |
-- 作者:keli0917 -- 发布时间:2024/1/27 11:24:00 -- |
-- 作者:keli0917 -- 发布时间:2024/1/27 11:52:00 -- .
[此贴子已经被作者于2024/1/27 12:07:08编辑过]
|
-- 作者:有点蓝 -- 发布时间:2024/1/27 14:06:00 -- 这种一个表查一次就行了 Dim cmd As new SQLCommand() cmd.C \'指定数据源 Dim dr As Row = Args(0) \' cmd.CommandText = "S1elect 方向,单据前缀 From [JC_默认值设置] WHERE 名称 = \'默认值\'" dim dt as datatable = cmd.ExecuteReader() for each dr1 as datarow in dt.datarows if dr.Table.Cols.Contains(dr1("方向")) dr(dr1("方向")) = dr1("单据前缀 ") end if next cmd.commandtext = "sel1ect 统一社会信用代码 From [JC_公司信息] where 中文全称 = \'" & dr("经营单位") & "\'" dim s as string = cmd.ExecuteScalar() dr("统一社会信用代码") = s dr("境内发货人") = s dr("生产销售单位") =s |