希望获得有关哪些列,表或行在MS Access 2010项目中导致写入冲突的更多信息,我编写了以下代码:
Private Sub Form_BeforeInsert(Cancel As Integer)
Call printCollisionInfo(Me.Recordset, Me.name)
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
Call printCollisionInfo(Me.Recordset, Me.name)
End Sub
方法printCollisionInfo
是:
Public Sub printCollisionInfo(rst As Recordset, formName As String)
Dim msg As String
msg = Now & " From " & formName & ": " & rst.BatchCollisionCount & " collisions"
Debug.Print msg
End Sub
但是在致电rst.BatchCollisionCount
时,我得到了
"Operation is not supported for this type of object"
是因为表单不执行dbUpdateBatch而是执行其他类型的更新吗?我可以设置表单的更新类型吗?是否有另一种方法可以查看SQL(带有数据值)或触发冲突的数据?
答案 0 :(得分:1)
Recordset.BatchCollisionCount
属性仅对 ODBCDirect 工作区有效。
这在Access 2010联机帮助中说明,但遗憾的是不在MSDN页面上:
https://msdn.microsoft.com/en-us/library/office/ff198240(v=office.14).aspx
查看该页面上示例中如何设置记录集。这远远不是绑定表单的记录集。
以下是关于ODBCDirect的简介:http://www.avdf.com/may97/art_optimist.html
这项技术已经过时了,但事实上,你的问题在我的谷歌搜索中排在第11位,可以提示你有多少人使用它...
我建议您在一个新问题中描述您的设置和您获得的错误。