Foxtable(狐表)用户栏目专家坐堂 → 请教优化打开窗口太耗时


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

主题:请教优化打开窗口太耗时

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


加好友 发短信
等级:童狐 帖子:289 积分:2709 威望:0 精华:0 注册:2018/5/21 16:49:00
请教优化打开窗口太耗时  发帖心情 Post By: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()
   


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


加好友 发短信
等级:超级版主 帖子:110497 积分:562369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/1/27 8:51:00 [只看该作者]

请贴出完整代码

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


加好友 发短信
等级:童狐 帖子:289 积分:2709 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:2709 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2024/1/27 10:19:00 [只看该作者]

测试了一下,这样窗口打开后就卡死了。

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


加好友 发短信
等级:童狐 帖子:289 积分:2709 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2024/1/27 10:22:00 [只看该作者]

无非是打开一个窗口,先新增一行,然后要加载的默认值有点多。可能有几十个。怎么让他慢慢加载进来并赋值给新建行,同时展示在窗口的控件上
[此贴子已经被作者于2024/1/27 10:23:46编辑过]

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


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

[JC_默认值设置]这个表的结构,和存储的数据截图发上来看看

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


加好友 发短信
等级:童狐 帖子:289 积分:2709 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2024/1/27 11:24:00 [只看该作者]

和这个默认值表的结构应该没什么关系吧,就是三列,都是字符型,使用MSSQL数据库
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20240127111839.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:童狐 帖子:289 积分:2709 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2024/1/27 11:52:00 [只看该作者]

.
[此贴子已经被作者于2024/1/27 12:07:08编辑过]

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


加好友 发短信
等级:超级版主 帖子:110497 积分:562369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部