【问题标题】:@command([ToolsRefreshAllDocs]) not working in Lotus Notes@command([ToolsRefreshAllDocs]) 在 Lotus Notes 中不起作用
【发布时间】:2020-04-21 19:14:58
【问题描述】:

我更改了我的 lotus notes 数据库中几个表单字段的属性。数据库中有 1000 多个文档。如果我打开每个文档然后保存并关闭它,为了反映该字段属性的更改,该字段正在更新。但是为每 1000 多个文档手动执行此操作并不是一个可行的解决方案。

我对此进行了调查,发现 @command([ToolsRefreshAllDocs]) 可以刷新视图中的所有文档。我用这个公式创建了一个代理并尝试从视图中运行它。不幸的是,它不起作用并给出错误“文档留给处理 xxx,NoteID 导致错误 = xxx”。我试图查找有关此错误的任何信息,但找不到任何信息。

谁能帮我解决这个问题,让我知道为什么会出现这个错误以及如何解决这个问题。或者有没有其他方法可以刷新视图中的所有文档,以便为所有文档更新字段。

谢谢

【问题讨论】:

    标签: lotus-notes lotus-domino lotus-formula


    【解决方案1】:

    您为视图中文档的表单上的字段设置了输入验证公式或计算值公式。刷新导致该公式执行,但它失败了。这可能与您更改的属性有关,导致依赖于字段的公式对于某些文档失败,即使它在您手动测试的文档中工作正常。它可能与您更改的属性相关,因为它可能只是一个文档,即使在您进行更改之前也会刷新失败。

    这很难手动追踪。我在 Notes 早期使用的一种技术是创建两个文件夹。将一半文档移至一个文件夹,另一半移至另一个文件夹。在这两个文件夹中尝试刷新代理。如果它们都失败了,则每个文件夹中至少有一个存在问题的文档。再创建两个文件夹并分成四组,然后在每个文件夹中再次尝试刷新。继续划分文档并刷新。每当您获得一个可以正确运行刷新代理的文件夹时,您就知道该文件夹中的所有文档都很好。继续划分和刷新出现错误的文件夹,直到最终只剩下一个文件夹中的一个文档。

    不用说,当您拥有包含数千个文档的大型数据库时,这种蛮力分而治之的方法并不有趣。幸运的是,有更好的方法。您可以编写一个 LotusScript 代理,它遍历视图中的文档并调用 doc.ComputeWithForm(true,true),检查布尔返回值并设置一个项目值(例如,对于该值所在的每个文档,debugItemFailed 为“1” false。然后使用 SELECT debugItemFailed = "1" 为自己创建一个新视图,您将看到所有存在验证或计算域问题的文档。

    顺便说一句,这也是我很久没有在任何生产数据库中使用 [ToolsRefreshAllDocs] 的原因。我总是使用调用 ComputeWithForm 的 LotusScript 代理。

    【讨论】:

    • 谢谢理查德。这很好地解释了为什么 ToolsRefreshAllDocs 失败了。我也尝试使用 ComputeWithForm,但不知何故它没有刷新文档。是否也可以刷新,或者只是获取验证失败的文档..?
    • 调用 ComputeWithForm 后是否调用了 doc.Save?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多