可以使用查询窗口中的标准SQL DELETE命令轻松地从MS Access DB表中删除许多记录。 但是,当尝试通过VBA执行相同的命令时,当有超过20,000个要删除的记录时,应用程序可以/确实会阻塞。
我通过运行循环并在较小的“块”中执行DELETE作业暂时解决了这个问题, 但我想知道是否有更好的方法来处理这种情况。 顺便说一句,不,没有其他选择可以建立更强大的数据库。这个工作是针对MS Access,期间推出的。
答案 0 :(得分:2)
您希望ADO DB的adAsyncExecute
以异步方式运行命令。
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
编辑:另一种选择是以另一种形式运行查询,只需确保表单不总是在顶部,您可以在其他表单的加载事件中执行查询。