ms-access-2013 - 删除 5 条记录但 RecordsAffected 属性为 0

标签 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 子句。它的值类似于“WHERE Cars.RecNo > 1441” 当代码到达 Stop 语句时,我通过使用立即窗口并键入以下内容来检查 RecordsAffected 属性:

? Currentdb.RecordsAffected 
 0 is the result.

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

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

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

INSERT INTO PickList (TableName,LastChangedDate,KeyNo)
Values(tablename,now(),recno from the tablenamed)

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

最佳答案

查看答案here解释出了什么问题。实际上,当您获得 RecordsAffected 属性时,您并不是在引用同一个对象。在这两种情况下,您都需要设置显式引用和使用。 像这样的东西:

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

关于ms-access-2013 - 删除 5 条记录但 RecordsAffected 属性为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610395/

相关文章:

ms-office - 缺少 Microsoft Access 2013 开发人员选项卡

odbc - 访问 2013 链接表到 DBF 文件

源代码公开时的安全性

ms-access - 使用共享 Access 数据库通过 WAN 进行数据损坏的风险

ms-access - SSIS 包在迁移到 64 位后失败

sql - MS-Access 中的 INTERSECT 多个子查询(没有 INTERSECT 关键字)

VBA 和 GetRawInputDeviceList

sql - 如何使用Excel VBA获取新插入记录的id?

java - ResultSet 行计数通过 .getRow() 使用 JDBC-ODBC 和 MS Access 给出错误答案