窗体里有个 text1, 一个搜索按钮Command1,一个Datagrid1. 当点击按钮时,开始从Access里搜索text1里的内容,然后把搜索结果Recordset放到Datagrid里。
问题是Access比较大,搜索时需要一段时间才能的出结果。现在我想用一个进度条或label来告诉使用者:搜索是在进行中呢,还是已经完成。恳请各位大侠指教。
问题是Access比较大,搜索时需要一段时间才能的出结果。现在我想用一个进度条或label来告诉使用者:搜索是在进行中呢,还是已经完成。恳请各位大侠指教。
因此在ADODB控件等待结果的过程中他是挂起的,
如果你的搜索做在一个查询内在语句以后使用DoEvents也不行。
建议在执行复杂操作之前,
启用一个新的窗体,使之显示一个重复的进度条,类似于WindowsXP启动时的进度条,
减少视觉时间就可以了,
或者你先计算复杂度和CPU空闲预计一个时间,使用新窗口显示进度条。
但是无法显示数据查询进度.
ProgressBar1.Max = MaxProgress
ProgressBar1.Value = Progress
ProgressBar1.Refresh
End Sub
ProgressBar1.Value = ProgressBar1.Max
Label1 = "查询完成。"
End Sub
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim s As String
Dim i As Long, j As Long
sql = "select * from material limit 10000"
Set cn = New ADODB.Connection
cn.Open "......." '连接数据库
'异步执行查询
Set rs = New Recordset
rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenStatic, adLockReadOnly, adAsyncExecute
Label1.Caption = "数据查询中"
Label2.Move Label1.Left + Label1.Width, Label1.Top
Label2.Visible = True
Do
i = i + 1
s = String(i, "。")
If i = 10 Then i = 0
Label2.Caption = s
DoEvents
Loop Until (rs.State And adStateOpen)
Label2.Visible = False
Label1.Caption = "查询完毕"
'............
Set rs = Nothing
Set cn = Nothing
先试试 of123(所以然)和vbman2003两位大侠的方法。