Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
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()
   

2楼
有点蓝 发表于:2024/1/27 8:51:00
请贴出完整代码
3楼
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编辑过]
4楼
keli0917 发表于:2024/1/27 10:19:00
测试了一下,这样窗口打开后就卡死了。
5楼
keli0917 发表于:2024/1/27 10:22:00
无非是打开一个窗口,先新增一行,然后要加载的默认值有点多。可能有几十个。怎么让他慢慢加载进来并赋值给新建行,同时展示在窗口的控件上
[此贴子已经被作者于2024/1/27 10:23:46编辑过]
6楼
有点蓝 发表于:2024/1/27 10:27:00
[JC_默认值设置]这个表的结构,和存储的数据截图发上来看看
7楼
keli0917 发表于:2024/1/27 11:24:00
和这个默认值表的结构应该没什么关系吧,就是三列,都是字符型,使用MSSQL数据库
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20240127111839.png
图片点击可在新窗口打开查看
8楼
keli0917 发表于:2024/1/27 11:52:00
.
[此贴子已经被作者于2024/1/27 12:07:08编辑过]
9楼
有点蓝 发表于: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
共9 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 2 queries.