我有一个进度条,根据以下行进行更新:
Call ProgressBar(X)
其中X表示条形显示为“完成”的百分比。
我已经大致计算了整个代码中的各种时间间隔,并将这些行放在了几个地方。对于大多数代码来说,它运行得非常顺利,但只有一半的条形码,问题是强制跳跃从10%到60%。
我正在使用ADODB连接在代码中运行SQL查询(我无法将其从代码中删除,因为我通过它传递变量)。从10到60的跳转是我执行查询的行的任一侧
Set rs = conn.Execute(QryND)
其中rs定义为ADODB.Recordset,conn定义为ADODB.Connection。
我认为理想情况下我会想知道是否可以说:
Call ProgressBar(10)
'code to the effect of: "in x seconds, execute the next line but in
'the meantime continue with the code
Call ProgressBar(20)
'code to the effect of: "in 2x seconds, execute the line but in the
'meantime continue with the code
Call ProgressBar(30)
Set rs = conn.Execute(QryND)
或者那种效果。
或者一种在后台运行查询并将代码延续到某一点的方法。例如
Call ProgressBar(10)
'instruct to run in backrgound:
Set rs = conn.Execute(QryND)
Call ProgressBar(10)
'wait x seconds
Call ProgressBar(20)
'wait x seconds
.
.
.
'Stop running query in background (in case it hasn't finished)
这些声音中的任何一个都可能吗?
答案 0 :(得分:0)
建议不要运行后台查询,因为它们会将代码运行到错误中。您实际可以做的是将StatusBar单独保留为f *并使用while循环(或定期)进行检查,即是获取连接,运行还是完成。
您可以做的是创建一个ActiveX对象来显示您想要告诉的内容,甚至可以显示花哨的负载条和多线反馈。
除非您调用外部脚本来执行它们,否则您无法在单线程应用程序中实际拥有异步进程。