1

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

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

4

1 回答 1

3

您希望 ADO DBadAsyncExecute异步运行您的命令。

  • 打开您的访问数据库
  • 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

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

于 2013-07-23T17:27:56.620 回答