在Form的记录集上使用BatchCollisions?

时间:2017-01-13 22:20:51

标签: access-vba

希望获得有关哪些列,表或行在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(带有数据值)或触发冲突的数据?

1 个答案:

答案 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位,可以提示你有多少人使用它...

我建议您在一个新问题中描述您的设置和您获得的错误。