无法使用lotusscript检索字段

问题描述 投票:1回答:2

我有一个带字段的笔记文档。在这个文档中,我创建了一个新字段(称为Status),它具有以下文本值:QUEUED。现在,如果我从视图中获取文档:

Set nvwQueuedOrderLines = dbCurrent.Getview("QueuedOrderLines")
Dim docOrderRegel As NotesDocument
Set docOrderRegel = nvwQueuedOrderLines.GetFirstDocument

并最终得到数据:

If docOrderRegel.Status(0) = "QUEUED" Then

...

然后在调试器中检查docOrderRegel的项目时,我看不到任何状态项/字段..但是当右键单击文档中的文档属性(在Lotus客户端中)时,我看到项目/字段状态的值为..所有其他字段我可以在调试器中看到但不是这个状态字段。如何在我的docOrderRegel对象中获取该字段。

lotus-notes lotus-domino lotusscript
2个回答
4
投票

我假设字段/项目在那里,但你只是在调试器会话中看不到它。

正如上面的注释所讨论的那样:LotusScript调试器限制了每个文档对象可以显示的项目数。显然这个限制是256项。调试器不处理在items数组中存储在索引位置高于255的任何项。

一个解决方案是添加一些类似的临时代码:

Dim itemStatus as NotesItem
...
Set itemStatus = docOrderRegel.GetFirstItem("Status")

这样,您可以从“状态”字段创建专用的NotesItem对象,使其与所描述的限制无关。然后,您应该能够在调试器会话中看到项目的内容。


3
投票

在Notes / Domino Form(= Design)和Document中是不同的(或多或少)独立的东西。

无论何时创建文档,它都采用AT THAT MOMENT形式,并在创建文档时为表单上的所有字段创建项目。

打开现有文档时也会发生同样的情况:它会查找表单并按照其设计方式显示其数据。根据需要添加新字段的新项目。

但是:在您明确这样做之前,它们不会保存到文档中。

这个过程纯粹是前端。

注意永远不会因为您更改相应表单中的内容而自动更改现有文档(也就是创建一个值为“QUEUED”的新字段“Status”。这就是您的脚本无法获取项目的原因(除非您打开文档和字段)在表单中成为一个项目)。

使用您对表单所做的更改,有多种方法可以更新您的文档。第一个是:打开前端的所有文档并保存它们......但这非常耗时。

您可以使用公式代理更新文档。只需选择“无”作为目标(这很重要,因为我们需要使用@Commands并且它们不能与任何目标一起使用)并输入公式:

@Command([ToolsRefreshSelectedDocs])

然后选择要刷新的文档并在其上运行代理。

您还可以使用LotusScript代理。这个需要在选定的文档上运行:

Dim ses as New NotesSession
Dim db as NotesDatabase
Dim dc as NotesDocumentCollection
Dim doc as NotesDocument

Set db = ses.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument()
While not doc is Nothing
  Call doc.ComputeWithForm( False, False )
  Call doc.Save( True, true, True )
  Set doc = dc.GetNextDocument( doc )
Wend

当然,您可以 - 而不仅仅是刷新所有文档 - 将该代码添加到现有代码中:

Set nvwQueuedOrderLines = dbCurrent.Getview("QueuedOrderLines")
Dim docOrderRegel As NotesDocument
Set docOrderRegel = nvwQueuedOrderLines.GetFirstDocument

If not docOrderRegel.HasItem( "Status" ) then
  Call docOrderRegel.ComputeWithForm( False, False )
End If

If docOrderRegel.Status(0) = "QUEUED" Then
© www.soinside.com 2019 - 2024. All rights reserved.