删除5条记录但记录受影响的属性为0

时间:2016-04-13 22:03:05

标签: ms-access-2013 jet ms-jet-ace

以下是代码段:

Private Sub frmSearch_UnMarkAll()
Const sqlD As String = "DELETE * FROM PickList WHERE TableName = ""CARS"" AND KeyNo IN (" & _
"SELECT RecNo FROM Cars "
If frmSearch.WhereSql <> vbNullString Then
    CurrentDb.Execute sqlD & frmSearch.WhereSql & ")"
End If
Stop
End Sub

通过单击frmSearch表单上的命令按钮来调用此函数。该按钮引发由上述代码处理的事件。 WhereSql是查找屏幕上显示的列表框中的where子句。它的值类似于&#34; WHERE Cars.RecNo&gt; 1441&#34; 当代码到达Stop语句时,我使用立即窗口并键入:

检查了RecordsAffected属性
? Currentdb.RecordsAffected 
 0 is the result.

我检查了PickList表,删除了相应的项目。

我的问题:这是一个错误吗?或者,删除记录不影响它是否正常?

我已经解决了这个问题。我从PickList表中删除了SequenceNo字段。我在PickList表中创建了TableName和KeyNo并将其编入索引,并将Unique指定为yes。现在我只是

INSERT INTO PickList(TableName,LastChangedDate,KeyNo)
值( tablename ,now(),来自tablenamed的recno)

如果INSERT由于错误3022而失败,则尝试重复输入,我在此示例中忽略。其他一切都以我想要的方式发挥作用。当我在代码或视图中通过在调试器中打印来测试时,RecordsAffected属性始终为零。这仍然令人困惑,因为如果您以交互方式从访问中运行操作查询,则会显示所有信息。如果您运行其他关系DBMS(标准的那些),则在使用查询引擎时总会有反馈。如果这是访问中的错误,我发现很难相信其他人没有失败。我倾向于认为我搞砸了。希望我不是唯一的先锋。谢谢,提前看这个。

1 个答案:

答案 0 :(得分:3)

请参阅答案here以了解出现问题的原因。实际上,当您获取RecordsAffected属性时,您不是指同一个对象。您需要在两种情况下都设置显式引用和使用。 类似的东西:

dim db as dao.database
set db=currentdb
db.execute "some SQL statement", dbfailonerror
debug.print db.recordsaffected