1

有什么方法可以通过自动化和隐藏进程来避免烦人的写入冲突消息,这样它就不会显得程序有缺陷?无论如何,这些消息似乎没有任何意义,因为只有一个真正的选择就是放弃更改。

4

2 回答 2

2

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

于 2011-05-26T18:42:14.470 回答
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

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

于 2011-05-27T02:17:14.800 回答