@@((ToolsRefreshAllDocs])在Lotus Notes中不起作用

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

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

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

任何人都可以帮助我,让我知道为什么会出现此错误以及如何解决。或者,还有其他方法可以刷新视图中的所有文档,以便为所有文档更新字段。

谢谢

lotus-notes lotus-domino lotus-formula
1个回答
0
投票

您为视图中文档的表单上的字段设置了输入验证公式或计算值公式。刷新导致该公式执行,并且失败了。这可能与您更改的属性有关,这导致某些文档依赖于字段的公式失败,即使该公式在您手动测试的文档中效果很好。它可能not与您更改的属性有关,因为它可能只是一个文档,即使您没有进行更改,刷新也可能失败。

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

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

而且,这就是为什么我很长时间没有在任何生产数据库中使用[ToolsRefreshAllDocs]的原因了。我总是使用一个调用ComputeWithForm的LotusScript代理。

© www.soinside.com 2019 - 2024. All rights reserved.