關於Domino數據庫的軟刪除


在Domino的數據庫屬性的 “高級” 附簽(選擇文件->數據庫->屬性),選中“允許軟刪除”,這樣我們就啟用了軟刪除功能,當一個文檔沒有刪除的時候我們可以使用NotesDatabase的GetDocumentByID(NoteID)和GetDocumentByUNID(UNID)方法來得到該文檔,如果我們將該文檔軟刪除后,我們在使用GetDocumentByUNID來獲取該文檔就會報如下錯誤:

---------------------------
Invalid universal id (4091 ) at line 14
---------------------------

當然你使用GetDocumentByUNID獲取硬刪除和不存在的文檔也是報同樣的錯誤。

這時我們只能使用GetDocumentByUNID來得到該文檔。我們可以使用NotesDocument的IsDeleted屬性來判斷該文檔是否已經軟刪除。

當軟刪除過期后,文檔就被硬刪除了,這個時候文檔的刪除存根仍然存在。

當文檔的存根都不在了,這個時候使用GetDocumentByID訪問就會報4270的錯誤,下面是測試的代碼:

Sub Initialize()
    On Error GoTo TrapError

    Dim CurrentDB As NotesDatabase
    Dim Doc As NotesDocument
    Dim InvalidNoteID As Integer
    Dim Session As New NotesSession

    CurrentDB = Session.CurrentDatabase

    InvalidNoteID = 0
    'Set Doc = CurrentDB.GetDocumentByID ("15BB2" )
    Doc = CurrentDB.GetDocumentByUNID("889D30CE3CEE82F2482575520009CB1E")

    If InvalidNoteID = 0 Then
        If Doc Is Nothing Then
            Msgbox("Deletion stub")
        ElseIf Doc.IsDeleted Then
            Msgbox("Soft deletion")
            Msgbox(doc.Subject(0))
        Else
            Msgbox("Active message")
            Msgbox(doc.Subject(0))
        End If
    Else
        Msgbox("No message")
    End If
    Exit Sub

TrapError:
    Select Case Err
        Case 4270
            Msgbox("4270")
            InvalidNoteID = 1
            Resume Next
        Case Else
            Msgbox Error + " (" + Cstr (Err) + " ) at line " + Cstr (Erl)
            End
    End Select
End Sub

被刪除的文檔在它們的軟刪除過期之前都可以被恢復。直到數據庫視圖被刷新(通過點擊F9鍵,選擇視圖->刷新,或者關閉數據庫)之前,被標記軟刪除的文檔不會出現在您的廢紙簍文件中。

為了查看或者恢復這些被刪除的文檔,您需要在數據庫中創建以下視圖:

1.啟動Domino Designer,打開要設置軟刪除的數據庫
2. 在主菜單中,選擇”創建“ -> “視圖”
3.在 ”視圖名稱“ 中輸入視圖名稱(可以給此視圖賦予任何一個名稱)
4. 在 “視圖類型” 中選擇 “共享,包含已刪除的文檔”
以上操作在數據庫中創建一個可供用戶查看所有軟刪除的文檔。現在您可以訪問標記為軟刪除的文檔。
5. 為了恢復這些文檔,創建一個操作/編輯標簽/按鈕或者代理來包含如下命令:
@UndeleteDocument
這個命令可以把已經標記為軟刪除狀態的文檔恢復為正常的狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM