数据库操作时显示进度条

caoyang0299 2013-04-02 11:14:48
我想在数据库查询、插入、更改的过程中,加个进度条,
这进度条应该怎么弄,谢谢
...全文
484 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在还是人类 2013-04-05
  • 打赏
  • 举报
回复
其实数据殷勤查询的时间并不久,而是你要显示数据的过程久。
如果不相信,你可以尝试这样写


dim rs As new Recordset
dim rscount as long
dim id as long

rs.open "select count(id) as c from Inventory", conn, 3, 1
rscount = rs!c
rs.close
rs.open "select id as c from Inventory", conn, 3, 1
id = rs!id
rs.close
msgbox "供 " & rscount & " 条记录,第一条记录的 ID 为" & id


你可以看看这个过程在10w或更多条数据的情况下需要多久时间?可以肯定的告诉你,很快很快。
既然这样,就可以在很短的时间内取得要查询的数据条数,那就可以根据这个数据条数来做进度条的总值,
在具体的查询数据循环数据时 再更新当前进度,如:

rs.open "select count(id) as c from Inventory", conn, 3, 1
rscount = rs!c
rs.close
if rscount>=1 then
progressbar1.max = rscount
rs.open "select id,title as c from Inventory", conn, 3, 1
for i=1 to rscount
doevents
list1.additem rs!id & " " & rs!title
progressbar1.value = i
if i<rscount then rs.movenext
next i
rs.close
end if
酷心 2013-04-03
  • 打赏
  • 举报
回复
Dim WithEvents rs As ADODB.Recordset 要定义为全局的,不是定义在command3里面的
caoyang0299 2013-04-03
  • 打赏
  • 举报
回复
我这是win7,32位
caoyang0299 2013-04-03
  • 打赏
  • 举报
回复
弄不弄提供一下详细的代码,我参照网上的弄了一下,不行呀
http://support.microsoft.com/kb/262311/zh-cn
http://www.docin.com/p-557363627.html
谢谢
Private Sub Command3_Click()
Dim conn As New ADODB.Connection
Dim strc As String
strc = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=erp;Data Source=127.0.0.1"
conn.Open strc
Dim strsql As String
strsql = "select * from Inventory "
'Dim rs As New ADODB.Recordset
'With rs
Dim WithEvents rs As ADODB.Recordset
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient

.Properties("Initial Fetch Size") = 2
.Properties("Background Fetch Size") = 4

Debug.Print "Start"
Debug.Print "Initial Fetch Size: " & _
.Properties("Initial Fetch Size")
Debug.Print "Background Fetch Size" & _
.Properties("Background Fetch Size")

.Open strsql, conn, , , adAsyncFetch
'.Open strsql, conn, adOpenDynamic, adLockPessimistic, adCmdText
End With

'rs.Open strsql, conn, adOpenDynamic, adLockPessimistic, adCmdText
'End With

Text2(0).Text = rs.Fields(0)

End Sub

Private Sub Form_Load()
Me.WindowState = 2



End Sub
Private Sub rs_FetchProgress(ByVal Progress As Long, _
ByVal MaxProgress As Long, _
adStatus As ADODB.EventStatusEnum, _
ByVal pRecordset As ADODB.Recordset)

Debug.Print "fetch:" & Progress & "max:" & MaxProgress

End Sub


lliai 2013-04-03
  • 打赏
  • 举报
回复
5楼方法不错。谢谢。我个人会用记录作为进度显示。每100条显示一次。
caoyang0299 2013-04-03
  • 打赏
  • 举报
回复
定义全局的也不好用,和我的版本有关?win7 32位系统
东方之珠 2013-04-02
  • 打赏
  • 举报
回复
引用 5 楼 of123 的回复:
可以用。 1 声明记录集变量时: Dim WithEvents rs As ADODB.Recordset 这样,rs 对象变量就带上了事件。 2 见下列事件 Private Sub rs_FetchProgress(ByVal Progress As Long, ByVal MaxProgress As Long, adStatus As ADODB.EventStat……
嗯,这个办法好!
of123 2013-04-02
  • 打赏
  • 举报
回复
可以用。 1 声明记录集变量时: Dim WithEvents rs As ADODB.Recordset 这样,rs 对象变量就带上了事件。 2 见下列事件 Private Sub rs_FetchProgress(ByVal Progress As Long, ByVal MaxProgress As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) End Sub 在事件中将 MaxProgress 赋给 ProgressBar.Max,将 Progress 赋给 ProgressBar.Value。 可以实现查询进度条。
caoyang0299 2013-04-02
  • 打赏
  • 举报
回复
还是不明白,例如查询10w条数据(用了1分钟),没有时间,我这进度条应该杂弄
东方之珠 2013-04-02
  • 打赏
  • 举报
回复
引用 2 楼 caoyang0299 的回复:
嗯,就是这个问题,例如查询,数据量比较大,比较慢,所以想弄个进度条出来,按sql执行的时间来,但这个执行的时间怎么弄出来
执行的时间是算不出来的。比较简单的办法是按 SQL 查询了多少条记录作为进度,总的记录有多少,这些应该算得出来。
caoyang0299 2013-04-02
  • 打赏
  • 举报
回复
嗯,就是这个问题,例如查询,数据量比较大,比较慢,所以想弄个进度条出来,按sql执行的时间来,但这个执行的时间怎么弄出来
东方之珠 2013-04-02
  • 打赏
  • 举报
回复
进度条本身并不难,可以用进度条控件,也可以用PictureBox模拟.难的是用什么数据作为进度. 数据库查询、插入、更改,用什么作为进度??
PHP+Ajax网站开发典型实例.。。 第1章 PHP基础实例 实例1 构建PHP运行环境 实例2 “你好,PHP”实例 实例3 中文显示实例 实例4 删除字符串中的空白 实例5 字符串反转 实例6 字符串加密 实例7 检查日期的有效性 实例8 简单猜数游戏 实例9 验证信用卡号 实例10 计算两个数组并、交和差 实例11 数组排序 第2章 PHP文件实例 实例12 获取文件信息 实例13 文件写入并锁定 实例14 读取文件信息 实例15 随机提取文件行 实例16 获得磁盘剩余空间 实例17 搜索文件或文件夹 实例18 文件下载 实例19 文件上传 实例20 网页计数器 实例21 超级链接计数 第3章 数据库、XML实例 实例22 mysql类库完成MySQL数据库的添加、删除和修改 实例23 mysqli类库完成MySQL数据库的添加、删除和查询 实例24 获取服务器和系统信息 实例25 分页显示信息 实例26 使用PHP简单实现BBS程序 实例27 使用0DBC函数库完成数据库操作 实例28 使用DOM处理XML 第4章 会话实例 实例29 创建会话 实例30 使用数据库保存会话 实例31 使用文件统计在线人数 实例32 设置和获取Cookie参数 实例33 删除会话中已注册变量 实例34 数据编码 实例35 简单购物车 第5章 PEAR和正则表达式实例 实例36 PEAR管理器安装及PEAR包常见操作 实例37 HTML QuickForm完成表单验证 实例38 Calendar仓ll建日历 实例39 File Find搜索文件 实例40 HTTP Upload上传多个文件 实例41 Validate US验证电话号码 实例42 转换日期格式 实例43 用户注册验证 第6章 实现基本Ajax技术 实例44 Ajax测试实例 实例45 客户端解析普通字符串 实例46 客户端解析XML文件响应 实例47 客户端发送POST无参数请求 实例48 客户端发送带有参数请求 实例49 客户端以表格形式显示数据 实例50 服务器端自动生成XML文件 实例51 客户端以指定CSS样式显示数据 实例52 用户登录校验 实例53 页面自动刷新间 实例54 实现新闻滚动播放 第7章 实现高级Ajax技术 实例 55创建工具提示 实例 56读取响应首部 实例 57动态加载列表框 实例 58显示进度条 实例 59数据无刷新写入文本文件 实例60 提供自动完成 实例61 实现级联菜单的设计 实例62 PHP+Ajax树状菜单 第8章 Ajax数据库操作 实例63 显示数据库系统信息 实例64 实现数据库常见操作 实例65 完成数据库多种查询显示 实例66 数据库记录自动提示 实例67 AjaX实现数据记录排序 实例68 局部动态更新数据 实例69 AjaX+PHP数据分页显示 实例70 指定CSS样式显示数据 实例71 JSON格式处理信息 第9章 Ajax尚技术 实例72 根据邮编自动完成地址信息 实例73 AiaX+PHP域名查询 实例74 根据代码列出城市名 实例75 Ajax自动保存草稿 实例76 实更新股价 实例77 相册程序 实例78 切换标签 实例79 创建RSS阅读器 实例80 基于prototype框架程序 实例81 基于xajax框架程序 第10章 Ajax实现综合实例 实例82 汇智在线留言板程序 实例83 汇智在线聊天室程序 实例84 汇智在线BBS论坛

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧