3

我的 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 构建得很好,但它什么也没做。我查看表中的待定课程,而我要删除的具有 ID 的课程就坐在那里。没有有意义的错误,什么都没有。这曾经有效,有时有效,但目前无效。

想法?

4

1 回答 1

4

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

dbMine.Execute qr, dbFailOnExecute

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

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

所以dbFailOnExecute会给你运行时错误消息,解释为什么没有发生预期的删除。

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

DoCmd.SetWarnings True
于 2013-01-02T19:26:28.987 回答