如何使用VBA删除MS Access中的大量记录

时间:2013-07-23 17:10:07

标签: ms-access-2010

可以使用查询窗口中的标准SQL DELETE命令轻松地从MS Access DB表中删除许多记录。 但是,当尝试通过VBA执行相同的命令时,当有超过20,000个要删除的记录时,应用程序可以/确实会阻塞。

我通过运行循环并在较小的“块”中执行DELETE作业暂时解决了这个问题, 但我想知道是否有更好的方法来处理这种情况。 顺便说一句,不,没有其他选择可以建立更强大的数据库。这个工作是针对MS Access,期间推出的。

1 个答案:

答案 0 :(得分:2)

您希望ADO DB的adAsyncExecute以异步方式运行命令。

  • 打开Access DB
  • Alt + F11 打开VBA编辑器
  • Tools菜单中选择References...
  • 添加“Microsoft ActiveX Data Objects 6.1 Library”或任何最新版本

然后使用如下代码:

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

编辑:另一种选择是以另一种形式运行查询,只需确保表单不总是在顶部,您可以在其他表单的加载事件中执行查询。