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