你这个用进度条提示想法肯定可以,但我觉得要做到真正在时间上平滑的进度条很困难,君不见微软自己的都不平滑。 所以最常用的方法就是前面各位提到的用数据库的记录数来模拟: 比如: intStep=CInt(ADORS.Recordset.Count/ProgressBar.Max) 之后在检索中可以这样使用: Do While Not ADORs.EOF '这里写数据库访问代码 intCount=IntCount+1 If intCount=intStep Then intCount=0 If ProgressBar.Value<ProgressBar.Max ProgressBar.Value=ProgressBar.Value+1 End if Loop 大概这样吧,这样写主要是避免每次引用ProgressBar影响性能,但好像还有改进的地方,希望高手指点。
如果,你要将查询的结果记录一条一条的返回,则思路同 zhenxizhou(追忆) 将查询的结果条数分成二十份(当然也可五十份),每返回一份记录(二十分之一的总记录条数),进度条前进一格(5%)。(实际上这种时间进度并不是真正查询记录的时间进度,只是一种模拟:)
如果,只需返回记录的条数。就不好捕获或时间进度了。
http://expert.csdn.net/Expert/topic/1227/1227220.xml?temp=.4680445
所以最常用的方法就是前面各位提到的用数据库的记录数来模拟:
比如:
intStep=CInt(ADORS.Recordset.Count/ProgressBar.Max)
之后在检索中可以这样使用:
Do While Not ADORs.EOF
'这里写数据库访问代码
intCount=IntCount+1
If intCount=intStep Then
intCount=0
If ProgressBar.Value<ProgressBar.Max
ProgressBar.Value=ProgressBar.Value+1
End if
Loop
大概这样吧,这样写主要是避免每次引用ProgressBar影响性能,但好像还有改进的地方,希望高手指点。