设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2767|回复: 3
打印 上一主题 下一主题

[窗体] 任务栏进度条如何处理

[复制链接]
跳转到指定楼层
1#
发表于 2011-12-29 22:27:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于记录五六千条,在更新记录时花费的时间较长,所以我需要采用进度条来提示更新情况。为减少窗体,我参考todaynew老汉的《杏花村——状态栏进度条》,但我不知状态栏进度条的代码放在哪里。

我的代码如下:

  ssql = "update tblA,tblname set tblA.姓名=tblname.姓名 where tblA.序号=tblname.序号"
    CurrentDb.Execute ssql


状态栏进度条的代码如下:

Dim i As Long
Dim j As String
Dim str As String
For i = 1 To 1000000
    j = Format(Round(i / 1000000, 2) * 100, "@@@%")
    If i Mod 100000 = 0 Then
        str = str & "■"
        Me.进度条.StatusBarText = j & "  " & str
    End If
Next
Me.进度条.StatusBarText = "处理完毕"


请问,状态栏进度条的代码应放在SQL语句的哪个地方才正确呢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-12-30 16:59:28 | 只看该作者
那个SQL语句用不上这个进度提示.应该是SQL没有给接口或方法,也没见过有人用.6000条记录对更新查询应该很快的.
你可以弄个等待进度条,在运行SQL前执行,结束后停止.给用户以程序正在运行的提示.
3#
发表于 2011-12-31 12:03:39 | 只看该作者
本帖最后由 roych 于 2011-12-31 16:27 编辑

在查询中是没法处理状态栏的,因为需要运行完毕才能判断耗时多少。计算出耗时后,再显示状态栏就显得多余了。换句话说,百分比是不好计算的。
折中一点的做法是:执行前,先设置状态栏文字。执行完毕后,再显示一次状态栏文字:
Me.进度条.StatusBarText="现在开始执行更新查询,可能需要1-2分钟"
ssql = "update tblA,tblname set tblA.姓名=tblname.姓名 where tblA.序号=tblname.序号"
    CurrentDb.Execute ssql
Me.进度条.StatusBarText="处理完毕"
当然,如果是多个查询的话,倒是可以把每一步按比例设置为百分比。此外,可以考虑改成ADO,根据更新记录的条数来设置,详细请参考以下帖子:
http://www.office-cn.net/thread-108730-1-1.html
4#
发表于 2013-6-17 18:42:38 | 只看该作者
如果是多个查询如何实现呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-21 17:44 , Processed in 0.092063 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表