单击按钮将文档复制到另一个视图

Click button to copy document to another view

我有两个视图,它们是 ComputerDraft。我在电脑视图中创建了一个按钮,它是将电脑文档创建一个副本到草稿视图。

下面是我的按钮代码。当我点击按钮时,它说 "Object variable not set"

Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim view As NotesView

    Set db = session.CurrentDatabase
    Set view = db.GetView( "Draft" )
    Set doc = dc.GetFirstDocument()
    Set dc = db.AllDocuments
    While Not (doc Is Nothing)
        Call doc.CopyToDatabase(db)
        Set doc = dc.GetNextDocument(doc)
    Wend
End Sub

谁能帮帮我?我可以问一下,我需要在草稿视图中插入任何公式吗?感谢您的帮助!

更新问题

我发现了问题并修复了我的代码。但是当我单击该按钮时,它会复制所有文档并显示在两个视图中。我如何才能在仅草稿选定文档中获得该文档的副本?例如,"Active"文件而已?谢谢!

视图没有 "contain" 文档。文档在数据库中,视图显示选定的文档,使用 SELECT 公式。如果您的 SELECT 匹配所有文件,所有文件都会显示。该公式决定哪些文档是视图的一部分。

如果视图 A 包含您的文档而视图 B 不包含,则您必须调整视图 B 中的 SELECT 公式以使其与文档匹配。

例如如果您希望当前文档显示在视图 B 中,您可以向当前文档添加一个值,例如 DocumentViews,并将其设置为 "B",并将视图 B 的 SELECT 公式设置为 SELECT DocumentViews="B".

现在,如果您想对当前在视图中选定的文档执行某些操作,可以使用 NotesDatabase.UnprocessedDocuments 属性。它包含所有选定文档的列表。

Dim ns As New NotesSession
Dim db As NotesDatabase
Set db= ns.CurrentDatabase
Dim dc As NotesDocumentCollection
Set dc= db.UnprocessedDocuments
Dim doc As NotesDocument
Set doc= dc.GetFirstDocument
Dim newdoc As NotesDocument
Do Until doc Is Nothing
    ' you might have to check the status of the current document before copying...
    Set newdoc= doc.CopyToDatabase(db)
    Call newdoc.ReplaceItemValue("Status", "Draft")
    Call newdoc.Save(True, False)
    Set doc= dc.GetNextDocument(doc)
Loop