Lotus notes 单击按钮将文档复制到其他视图

Lotus notes 单击按钮将文档复制到其他视图,lotus-notes,lotus,Lotus Notes,Lotus,我有两种观点,即计算机观点和草稿观点。我在“计算机”视图中创建了一个按钮,它将创建一个计算机文档副本以草稿视图 下面是我的按钮代码。当我点击按钮时,它显示“未设置对象变量” 有人能帮我吗?我可以问一下,我是否需要在草稿视图中插入任何公式?谢谢你的帮助 更新问题 我已发现问题并修复了代码。但当我单击按钮时,它会复制所有文档并显示在两个视图上。如何在仅草稿的选定文档中获取文档副本?例如,仅“活动”文档?谢谢 视图不“包含”文档。文档位于数据库中,视图使用选择公式显示选定文档。如果您的选择与所有文档匹

我有两种观点,即计算机观点和草稿观点。我在“计算机”视图中创建了一个按钮,它将创建一个计算机文档副本以草稿视图

下面是我的按钮代码。当我点击按钮时,它显示“未设置对象变量”

有人能帮我吗?我可以问一下,我是否需要在草稿视图中插入任何公式?谢谢你的帮助

更新问题 我已发现问题并修复了代码。但当我单击按钮时,它会复制所有文档并显示在两个视图上。如何在仅草稿的选定文档中获取文档副本?例如,仅“活动”文档?谢谢

视图不“包含”文档。文档位于数据库中,视图使用选择公式显示选定文档。如果您的选择与所有文档匹配,则将显示所有文档。该公式决定哪些文档是视图的一部分

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

例如,如果希望当前文档显示在视图B中,可以向当前文档添加值,如DocumentView,并将其设置为“B”,然后将视图B的选择公式设置为SELECT DocumentView=“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

谢谢你的回复。我知道SELECT公式,但就我而言,我想使用复制文档。我想创建文档的副本并发送到草稿视图。在草稿视图中,我可以编辑文档而不影响计算机文档。之后,我将复制文档保存为“计算机视图”中的“活动文档”,并将旧计算机值设置为“非活动”,然后移动到“非活动视图”。这是我的第一步希望你能理解。谢谢我将在答案中加入一些代码,您可以将其作为起点。您打算如何在“计算机”视图中显示一个文档,在“草稿”视图中显示另一个文档?然后将第一个文档移动到非活动视图,将第二个文档移动到计算机视图??我想您需要文档中的某种状态字段,并在状态更改时移动文档。不容易…嘿,谢谢你的代码。我已经用我的代码实现了。我还有一个问题。如何区分原始文档和副本文档?因为当我使用代码时,它也会在相同的视图中显示复制文档,因为它会显示两个文档。如何在“计算机”视图中显示唯一的原始文档并删除副本文档,而在“草稿”视图中仅显示副本文档?我不知道如何区分这两个文档。这就是你选择公式的原因。我添加了Status字段,但是您可以使用任何其他字段来标记两个文档之间的差异。别忘了你的新文档有一天会变成旧文档,所以数据库中有原始文档的多个副本…不。您应该循环浏览未处理的文档。上面的代码将被修改。。。
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