这将启动一个异步查询,以便大型查询不会占用Access。
Option Explicit
Private WithEvents AsyncConnection As ADODB.Connection
Private Sub Command1_Click()
Const ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Data\Access\database1.mdb;Persist Security Info=False"
Set AsyncConnection = New ADODB.Connection
AsyncConnection.ConnectionString = ConnectionString
AsyncConnection.Open
Const sql As String = "SELECT * FROM table1"
Call AsyncConnection.Execute(sql, , CommandTypeEnum.adCmdText Or ExecuteOptionEnum.adAsyncExecute)
End Sub
Private Sub AsyncConnection_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
If (adStatus = adStatusOK) Then
Me.List2.RowSource = pRecordset.Source
End If
If (pConnection.State = ObjectStateEnum.adStateOpen) Then
pConnection.Close
End If
End Sub
From: https://bytes.com/topic/access/insights/905648-asynchronous-query