【问题标题】:Delete 5 Records but RecordsAffected Property is 0删除 5 条记录但 RecordsAffected 属性为 0
【发布时间】:2016-08-05 06:10:22
【问题描述】:

这是一个代码sn-p:

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。现在我只是

插入到 PickList(表名、LastChangedDate、KeyNo)
Values(tablename,now(),recno from the tablenamed)

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

【问题讨论】:

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


    【解决方案1】:

    查看答案here 以了解问题所在。实际上,当您获得 RecordsAffected 属性时,您并没有引用同一个对象。您需要在这两种情况下设置显式引用和使用。 比如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多