自动写入冲突消息

时间:2010-04-18 06:19:12

标签: ms-access multi-user conflict

是否有任何方法可以通过自动化和隐藏进程来避免恼人的写冲突消息,从而使其看起来不像程序有缺陷?这些消息似乎没有任何意义,因为只有一个真正的选择就是放弃这些改变。

2 个答案:

答案 0 :(得分:2)

我知道避免该消息的唯一方法是在运行进程或更改后端数据库(或sql server)上的数据后重新查询屏幕

答案 1 :(得分:0)

您应该能够在两个地方的组合中处理这些错误。第一个,也是最重要的是Form_Error事件。您的代码将如下所示:

Private Sub Form_Error(DataErr As Integer, Response As Integer)    
    If DataErr = 7787 Then
        MsgBox "Oops, this record was edited by someone else or " & _
               "in another screen while you were making edits." & _
                "Your edits cannot be saved."
        Response = acDataErrContinue
    End If
End Sub

您还需要在VBA中运行“保存”命令的任何位置处理错误3021,如下所示:

Private Sub cmdSave_Click()
    On Error GoTo ErrHandler

    DoCmd.RunCommand acCmdSaveRecord

    Exit Sub

ErrHandler:
    If Err.Number = 3021 Then
        'Do Nothing
        Resume Next
    Else
        'Handle other errors here
        Resume Next
    End If
End Sub

现在,我欣然同意其中一条评论,即您尝试解决导致这些错误的任何问题而不是围绕它们进行编码更为重要。在我的情况下,我使用上述解决方案来处理当用户将同一表单的两个实例打开到同一记录并在两个实例中进行编辑时发生的写冲突。如果我阻止用户打开相同的记录两次或者仅通过允许用户在其中一个打开的表单实例中进行编辑来防止编辑会更好,但这些都不是很容易实现,特别是当你使用你的时候自己的表格集合,所以我猜你可以说我在等待“下雨天”。