关于Domino数据库的软删除

在Domino的数据库属性的 “高级” 附签(选择文件->数据库->属性),选中“容许软删除”,这样咱们就启用了软删除功能,当一个文档没有删除的时候咱们可使用NotesDatabase的GetDocumentByID(NoteID)和GetDocumentByUNID(UNID)方法来获得该文档,若是咱们将该文档软删除后,咱们在使用GetDocumentByUNID来获取该文档就会报以下错误:

---------------------------
Invalid universal id (4091 ) at line 14
---------------------------数据库

固然你使用GetDocumentByUNID获取硬删除和不存在的文档也是报一样的错误。测试

这时咱们只能使用GetDocumentByUNID来获得该文档。咱们可使用NotesDocument的IsDeleted属性来判断该文档是否已经软删除。spa

当软删除过时后,文档就被硬删除了,这个时候文档的删除存根仍然存在。代理

当文档的存根都不在了,这个时候使用GetDocumentByID访问就会报4270的错误,下面是测试的代码:code

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键,选择视图->刷新,或者关闭数据库)以前,被标记软删除的文档不会出如今您的废纸篓文件中。blog

为了查看或者恢复这些被删除的文档,您须要在数据库中建立如下视图:文档

1.启动Domino Designer,打开要设置软删除的数据库
2. 在主菜单中,选择”建立“ -> “视图”
3.在 ”视图名称“ 中输入视图名称(能够给此视图赋予任何一个名称)
4. 在 “视图类型” 中选择 “共享,包含已删除的文档”
以上操做在数据库中建立一个可供用户查看全部软删除的文档。如今您能够访问标记为软删除的文档。
5. 为了恢复这些文档,建立一个操做/编辑标签/按钮或者代理来包含以下命令:
@UndeleteDocument
这个命令能够把已经标记为软删除状态的文档恢复为正常的状态。it

相关文章
相关标签/搜索