2010-04-18 54 views
1

有沒有方法來避免通過自動化和隱藏的進程,以便它不會出現好像程序是有缺陷的惱人的寫入衝突的消息?無論如何,這些消息似乎沒有任何意義,因爲只有一個真正的選擇是放棄更改。自動化寫衝突消息

+2

這是關於什麼? – Amber 2010-04-18 06:21:49

+0

首先,我們需要更多的上下文來提供建議。其次,你完全誤解了可用的選擇。在Access本身中,您可以編寫自己的代碼來處理寫入衝突,不過最好先避免產生它的條件。 – 2010-04-26 23:07:27

+1

我在這裏質疑[multiuser]標籤的值。它根本沒有添加任何內容,因爲默認情況下Access是啓用多用戶的。同樣,可能會與單個用戶產生寫入衝突。 – 2010-05-14 20:10:12

回答

2

我知道,以避免該消息的唯一方法是運行的進程或後端數據庫上更改的數據(或SQL Server)

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 

你也將需要處理的錯誤3021的任何地方,你在VBA運行保存命令,像這樣:現在

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 

,我隨手用一個同意評論說,你試圖解決導致這些錯誤的任何東西,而不是圍繞它們編碼更重要。在我的情況下,我正在使用上述解決方案來處理在用戶將同一表單的兩個實例打開到同一記錄並在兩個實例中進行編輯時發生的寫入衝突。它會更好,如果我會阻止打開同一個記錄兩次的用戶或防止編輯只允許用戶進行編輯在打開的表單實例之一,但這些都不是完全容易實現,尤其是當你使用你的自己的表單集合,所以我想你可以說我正在等待一個「下雨天」。