VBA删除查询未执行

时间:2013-01-02 19:15:29

标签: 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

从debug语句和msgbox构建的查询很好,但它没有做任何事情。我查看表中的挂起的类,并且我正在尝试删除的ID的类只是坐在那里。没有意义的错误,没有。这曾经有效,有时有效,但目前无法正常工作。

想法?

1 个答案:

答案 0 :(得分:4)

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

dbMine.Execute qr, dbFailOnExecute

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

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

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

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

DoCmd.SetWarnings True