VBA 删除查询未执行

标签 vba ms-access

我的 Access 应用程序有一个怪癖,无法调试。 我有一个表单,本质上是插入“已完成”表并从“待处理”表中删除。抛开设计偏好不谈,这就是我的做法,而不是某种“状态”列。

我将用相关行总结我的代码。

首先它会插入到已完成的表中,然后进行简单的删除:

    qr = "DELETE * FROM tblPendingClasses WHERE ((tblPendingClasses.ID = " & curr         & "));" 'build the query
    Debug.Print qr
    MsgBox (qr)
    dbMine.Execute qr, dbFailOnExecute

     Form.Refresh 'refresh,requery
     Form.Requery
     MsgBox ("Class review complete.")
     docmd.close

根据调试语句和 msgbox,查询构建得很好,但它只是不执行任何操作。我查看了待处理类(class)的表,发现具有我要删除的 ID 的类(class)就在那里。没有有意义的错误,什么都没有。这曾经有效,有时有效,但目前不起作用。

想法?

最佳答案

如果您的模块包含Option Explicit,您应该会在这一行收到编译错误“变量未定义”:

dbMine.Execute qr, dbFailOnExecute

您可能希望将 dbFailOnError 而不是 dbFailOnExecute 作为 .Execute 方法的选项。将 Option Explicit 添加到代码模块的声明部分,以便当您尝试使用不存在的常量名称时,VBA 编译器会向您发出警告 (dbFailOnExecute) 。然后编译并修复编译器提示的任何其他问题。

Database.Execute Method 帮助主题建议:
...在使用 Execute 方法运行更新或删除查询时,始终使用 dbFailOnError 选项。如果任何受影响的记录被锁定并且无法执行,此选项会生成运行时错误并回滚所有成功的更改”不会被更新或删除。

因此,dbFailOnExecute 将为您提供运行时错误消息,解释为什么预期的删除没有发生。

进行这些更改后,如果您仍然没有删除任何行并且没有错误消息,请确保您没有关闭 SetWarnings

DoCmd.SetWarnings True

关于VBA 删除查询未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14127773/

相关文章:

vba - 如何从带有参数的按钮调用函数

excel - Application.Evaluate 与 Activesheet.Evaluate

c# - Access 数据库到 Web 应用程序

mysql - [hy000][mysql][odbc 3.51 驱动程序]无法连接到 'mysql8.namesco.net' (10061) 上的 MYSQL 服务器

VBA选择匹配值的列并将数据复制到另一个工作簿

excel - 如何从 Excel 更新/执行 QC ALM 中的测试用例结果

sql - 一个 Access SQL 查询中的两个右连接

ms-access - 如果隐藏了绑定(bind)列,则在组合框中选择一行会失败

vba - 使用非字母数字字符排序的范围出现意外顺序

当任务计划程序设置为 "Run whether user logged on or not"时 VBA 失败