使用查询窗口中的标准 SQL DELETE 命令可以轻松地从 MS Access DB 表中删除许多记录。但是,当尝试通过 VBA 执行相同的命令时,当有超过 20,000 条记录要删除时,应用程序可能/确实会阻塞。
我通过运行一个循环并在较小的“块”中执行 DELETE jobe 暂时解决了这个问题,但我想知道是否有更好的方法来处理这种情况。顺便说一句,不,更强大的数据库没有其他选择。此作业指定用于 MS Access,期间。
使用查询窗口中的标准 SQL DELETE 命令可以轻松地从 MS Access DB 表中删除许多记录。但是,当尝试通过 VBA 执行相同的命令时,当有超过 20,000 条记录要删除时,应用程序可能/确实会阻塞。
我通过运行一个循环并在较小的“块”中执行 DELETE jobe 暂时解决了这个问题,但我想知道是否有更好的方法来处理这种情况。顺便说一句,不,更强大的数据库没有其他选择。此作业指定用于 MS Access,期间。
您希望 ADO DBadAsyncExecute
异步运行您的命令。
Tools
菜单中选择References...
然后使用如下代码:
Dim sSql As String
Dim oCmd As ADODB.Command
sSql = "DELETE FROM TableName WHERE 1=1"
Set oCmd = New ADODB.Command
With oCmd
.ActiveConnection = CurrentProject.Connection
.CommandType = adCmdText
.CommandText = sSql
.Execute adAsyncExecute
End With
编辑:另一种选择是在另一个表单中运行查询,只要确保表单不总是在顶部,您可以在另一个表单的加载事件中执行查询。